You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "James E. King, III (JIRA)" <ji...@apache.org> on 2016/06/22 02:36:58 UTC

[jira] [Commented] (THRIFT-1931) Sending a frame size of zero to a TNonblockingServer causes an assertion failure

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

James E. King, III commented on THRIFT-1931:
--------------------------------------------

I'm inclined to resolve this issue as "Won't Fix" as the behavior is intended, so I am going to do that.

> 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
>              Labels: TNonblockingServer
>
> 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 was sent by Atlassian JIRA
(v6.3.4#6332)