[ https://issues.apache.org/jira/browse/THRIFT-5183?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yuxuan Wang closed THRIFT-5183. ------------------------------- Resolution: Fixed > Read beyond current frame in THeaderTransport might block the protocol code > --------------------------------------------------------------------------- > > Key: THRIFT-5183 > URL: https://issues.apache.org/jira/browse/THRIFT-5183 > Project: Thrift > Issue Type: Bug > Components: Go - Library > Affects Versions: 0.13.0 > Reporter: Yuxuan Wang > Assignee: Yuxuan Wang > Priority: Major > > This is a bug introduced in my initial implementation of go THeader in > https://github.com/apache/thrift/commit/4d46c1124450eeb77d2a6adc7ea5fab304bfeb4a. > In THeaderTransport.Read implementation, after finished reading the current > frame, we try to read the next frame to fill the rest of the reading buffer: > https://github.com/apache/thrift/blob/df2f5d2cf321f070a356872eea13dd3f68891043/lib/go/thrift/header_transport.go#L502-L506 > This is actually a wrong behavior. At the end of frame, the other end is > highly likely awaiting for the response, and very unlikely to send anything > for the next frame. So this behavior could potentially cause a blocking read > and eventually lead to timeout. > Currently the two supported wrapped protocol under THeaderProtocol are > TBinaryProtocol and TCompactProtocol, I checked the code and neither of them > will actually use a more than enough buffer for the Read call to the > transport, so this bug shouldn't be causing any real issues yet. But it's > still a bug worth fixing. > I already have a fix ready, will send out the PR after this ticket is created. > Ironically, this bug is actually very similar to the bug in TFrameTransport > that I fixed in that commit :( -- This message was sent by Atlassian Jira (v8.3.4#803005)