aboutsummaryrefslogtreecommitdiff
path: root/server/websocket.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/websocket.py')
-rw-r--r--server/websocket.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/server/websocket.py b/server/websocket.py
index d77f678d..ba4258f3 100644
--- a/server/websocket.py
+++ b/server/websocket.py
@@ -109,14 +109,17 @@ class WebSocket:
self.keep_alive = 0
return
+ mask_offset = 2
if payload_length == 126:
payload_length = struct.unpack(">H", data[2:4])[0]
+ mask_offset = 4
elif payload_length == 127:
payload_length = struct.unpack(">Q", data[2:10])[0]
+ mask_offset = 10
- masks = data[2:6]
+ masks = data[mask_offset:mask_offset + 4]
decoded = ""
- for char in data[6:payload_length + 6]:
+ for char in data[mask_offset + 4:payload_length + mask_offset + 4]:
char ^= masks[len(decoded) % 4]
decoded += chr(char)
@@ -209,4 +212,4 @@ class WebSocket:
return response_key.decode('ASCII')
def finish(self):
- self.protocol.connection_lost(self) \ No newline at end of file
+ self.protocol.connection_lost(self)