From bd8ae910d23821cc88437f486cf9eb3f2bef9470 Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Tue, 29 Nov 2016 22:13:59 +0100 Subject: websocket: fix message type on chunking --- mitmproxy/proxy/protocol/websocket.py | 7 +++++-- 1 file 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)) -- cgit v1.2.3