[ 
https://issues.apache.org/jira/browse/THRIFT-3877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16266147#comment-16266147
 ] 

Chet Murthy commented on THRIFT-3877:
-------------------------------------

I stumbled across this problem myself, and then found this JIRA ticket.  
Thought I'd update it with my latest findings, in the possibility that if 
somebody here knows the THttpTransport (C++) code better than me  (completely 
new to it), they'll chime in.

Diagnosis: if a client sends a oneway RPC followed by a normal RPC (over HTTP) 
both RPCs can end up in the server-side socket, and hence both get read at 
once.  The server-side demarshalling logic pulls off the first message (for the 
oneway RPC), processes as normal, and then proceeds to (erroneously) read from 
the socket, instead of the observe that there is more data in its "httpBuf_" to 
be read.

I'm in the process of figuring out the logic of this module, and should 
hopefully have a fix soon.  But if somebody reads this and says "oh, I know how 
that goes!" I'd love it.


> C++: library don't work with HTTP.
> ----------------------------------
>
>                 Key: THRIFT-3877
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3877
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.9.3, 0.10.0
>         Environment: Windows 7, Visual Studio 2013 (C#), Qt 5.7 (MSVC 12).
> Thrift from git repo, SHA-1: 5a3f855b4e6882184f13c698855c877241144a12 (master)
>            Reporter: Sergey Fasman
>            Priority: Critical
>
> Client on C++.
> Tested on C# HTTP server and client — work ideal.
> Then create client on C++. Client after request starts infinitly wait for 
> data.
> For example, JSON protocol read data symbol by symbol, when trying read: it 
> always try to call recv function (even all data already received).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to