diff options
-rw-r--r-- | mitmproxy/proxy/protocol/websocket.py | 7 |
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)) |