THRIFT-2839 TFramedTransport read bug
Client: Go
Patch: Chi Vinh Le <cvl@chinet.info>
diff --git a/lib/go/thrift/framed_transport.go b/lib/go/thrift/framed_transport.go
index bfecbe8..21c636d 100644
--- a/lib/go/thrift/framed_transport.go
+++ b/lib/go/thrift/framed_transport.go
@@ -79,7 +79,14 @@
}
}
if p.frameSize < len(buf) {
- return 0, NewTTransportExceptionFromError(fmt.Errorf("Not enought frame size %d to read %d bytes", p.frameSize, len(buf)))
+ frameSize := p.frameSize
+ tmp := make([]byte, p.frameSize)
+ l, err = p.Read(tmp)
+ copy(buf, tmp)
+ if err == nil {
+ err = NewTTransportExceptionFromError(fmt.Errorf("Not enough frame size %d to read %d bytes", frameSize, len(buf)))
+ return
+ }
}
got, err := p.reader.Read(buf)
p.frameSize = p.frameSize - got
@@ -98,7 +105,7 @@
}
}
if p.frameSize < 1 {
- return 0, NewTTransportExceptionFromError(fmt.Errorf("Not enought frame size %d to read %d bytes", p.frameSize, 1))
+ return 0, NewTTransportExceptionFromError(fmt.Errorf("Not enough frame size %d to read %d bytes", p.frameSize, 1))
}
c, err = p.reader.ReadByte()
if err == nil {