Repository: thrift
Updated Branches:
  refs/heads/master 2238adabb -> 3f2e71015


THRIFT-3205 TCompactProtocol return a wrong error when the io.EOF happens
Client: Go
Patch: Wang Jing <[email protected]>

This closes #530


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/3f2e7101
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/3f2e7101
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/3f2e7101

Branch: refs/heads/master
Commit: 3f2e7101523bd326577e564c3d154a22082456e7
Parents: 2238ada
Author: Jens Geyer <[email protected]>
Authored: Fri Jun 26 21:54:35 2015 +0200
Committer: Jens Geyer <[email protected]>
Committed: Fri Jun 26 21:55:05 2015 +0200

----------------------------------------------------------------------
 lib/go/thrift/compact_protocol.go | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/3f2e7101/lib/go/thrift/compact_protocol.go
----------------------------------------------------------------------
diff --git a/lib/go/thrift/compact_protocol.go 
b/lib/go/thrift/compact_protocol.go
index ecff814..1a7a8da 100644
--- a/lib/go/thrift/compact_protocol.go
+++ b/lib/go/thrift/compact_protocol.go
@@ -329,17 +329,24 @@ func (p *TCompactProtocol) WriteBinary(bin []byte) error {
 
 // Read a message header.
 func (p *TCompactProtocol) ReadMessageBegin() (name string, typeId 
TMessageType, seqId int32, err error) {
+
        protocolId, err := p.ReadByte()
+       if err != nil {
+               return
+       }
+
        if protocolId != COMPACT_PROTOCOL_ID {
                e := fmt.Errorf("Expected protocol id %02x but got %02x", 
COMPACT_PROTOCOL_ID, protocolId)
                return "", typeId, seqId, 
NewTProtocolExceptionWithType(BAD_VERSION, e)
        }
+
        versionAndType, err := p.ReadByte()
-       version := versionAndType & COMPACT_VERSION_MASK
-       typeId = TMessageType((versionAndType >> COMPACT_TYPE_SHIFT_AMOUNT) & 
COMPACT_TYPE_BITS)
        if err != nil {
                return
        }
+
+       version := versionAndType & COMPACT_VERSION_MASK
+       typeId = TMessageType((versionAndType >> COMPACT_TYPE_SHIFT_AMOUNT) & 
COMPACT_TYPE_BITS)
        if version != COMPACT_VERSION {
                e := fmt.Errorf("Expected version %02x but got %02x", 
COMPACT_VERSION, version)
                err = NewTProtocolExceptionWithType(BAD_VERSION, e)

Reply via email to