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