aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mitmproxy/proxy/protocol/websocket.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/mitmproxy/proxy/protocol/websocket.py b/mitmproxy/proxy/protocol/websocket.py
index 31d734fd..ec1c6ebc 100644
--- a/mitmproxy/proxy/protocol/websocket.py
+++ b/mitmproxy/proxy/protocol/websocket.py
@@ -61,9 +61,10 @@ class WebSocketLayer(base.Layer):
if frame.header.fin:
payload = b''.join(f.payload for f in fb)
original_chunk_sizes = [len(f.payload) for f in fb]
+ message_type = fb[0].header.opcode
fb.clear()
- if frame.header.opcode == websockets.OPCODE.TEXT:
+ if message_type == websockets.OPCODE.TEXT:
t = WebSocketTextMessage
else:
t = WebSocketBinaryMessage
@@ -101,10 +102,12 @@ class WebSocketLayer(base.Layer):
else:
frms.append(websockets.Frame(
fin=True,
- opcode=frame.header.opcode,
+ opcode=websockets.OPCODE.CONTINUE,
mask=(False if is_server else 1),
masking_key=(b'' if is_server else os.urandom(4))))
+ frms[0].header.opcode = message_type
+
for frm in frms:
other_conn.send(bytes(frm))