diff options
Diffstat (limited to 'lib/websocket')
| -rw-r--r-- | lib/websocket/frame.go | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/websocket/frame.go b/lib/websocket/frame.go index a4f58fd1..fa65139e 100644 --- a/lib/websocket/frame.go +++ b/lib/websocket/frame.go @@ -283,12 +283,12 @@ func frameUnpack(in []byte) (f *Frame, rest []byte) { } if f.len > 0 { - if len(in)-x < int(f.len) { - f.payload = make([]byte, len(in)-x) - } else { - f.payload = make([]byte, f.len) + f.payload = make([]byte, 0, f.len) + paylen := len(in) - x + if uint64(paylen) > f.len { + paylen = int(f.len) } - copy(f.payload, in[x:]) + f.payload = append(f.payload, in[x:x+paylen]...) if f.masked == frameIsMasked { for y := 0; y < len(f.payload); y++ { |
