aboutsummaryrefslogtreecommitdiff
path: root/lib/websocket
diff options
context:
space:
mode:
Diffstat (limited to 'lib/websocket')
-rw-r--r--lib/websocket/frame.go10
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++ {