Martin Michelsen created THRIFT-1931:
----------------------------------------

             Summary: Sending a frame size of zero to a TNonblockingServer 
causes an assertion failure
                 Key: THRIFT-1931
                 URL: https://issues.apache.org/jira/browse/THRIFT-1931
             Project: Thrift
          Issue Type: Bug
          Components: C++ - Library
    Affects Versions: 0.9
         Environment: Ubuntu 10.04 and 12.04, both 64-bit
            Reporter: Martin Michelsen


TNonblockingServer::TConnection::workSocket doesn't check if readWant_ is zero 
before returning. Sending a frame with a size of zero leads to an assertion 
failure:
{{src/thrift/server/TNonblockingServer.cpp:494: void 
apache::thrift::server::TNonblockingServer::TConnection::workSocket(): 
Assertion `readBufferPos_ < readWant_' failed.}}

(You can reproduce this behavior on a TNonblockingServer by doing {{echo -e 
'\0\0\0\0' | nc server port}}.)

It can probably be fixed by checking if readWant_ is zero before the 
transition() call in workSocket, and disconnecting the client if so (just like 
what happens if readWant_ is too large). Not sure if this is necessarily the 
right thing to do though.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to