git » go-net » commit 7553b97

websocket: fix Read behaviour in hybiFrameReader.Read

author Dave Cheney
2016-05-31 05:38:05 UTC
committer Dave Cheney
2016-05-31 06:23:09 UTC
parent 30db96677b74e24b967e23f911eb3364fc61a011

websocket: fix Read behaviour in hybiFrameReader.Read

The contract for Read specifies that a caller should process n bytes of
data before handling an error value. The previous implementation may
have discarded the final data read from the underlying reader if err
was non nil.

Change-Id: I81547cd9ea62c4060f79523679beed6bbc6ccd95
Reviewed-on: https://go-review.googlesource.com/23534
Reviewed-by: Ian Lance Taylor <iant@golang.org>

websocket/hybi.go +0 -3

diff --git a/websocket/hybi.go b/websocket/hybi.go
index 60bbc84..8cffdd1 100644
--- a/websocket/hybi.go
+++ b/websocket/hybi.go
@@ -81,9 +81,6 @@ type hybiFrameReader struct {
 
 func (frame *hybiFrameReader) Read(msg []byte) (n int, err error) {
 	n, err = frame.reader.Read(msg)
-	if err != nil {
-		return 0, err
-	}
 	if frame.header.MaskingKey != nil {
 		for i := 0; i < n; i++ {
 			msg[i] = msg[i] ^ frame.header.MaskingKey[frame.pos%4]