diff options
author | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2016-11-29 22:13:59 +0100 |
---|---|---|
committer | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2016-11-29 22:13:59 +0100 |
commit | bd8ae910d23821cc88437f486cf9eb3f2bef9470 (patch) | |
tree | 757817604fdafb04502fa759e9829ea3b8c3de37 | |
parent | 6e15e766c579b179e3ae6e06197670f5d573bb40 (diff) | |
download | mitmproxy-bd8ae910d23821cc88437f486cf9eb3f2bef9470.tar.gz mitmproxy-bd8ae910d23821cc88437f486cf9eb3f2bef9470.tar.bz2 mitmproxy-bd8ae910d23821cc88437f486cf9eb3f2bef9470.zip |
websocket: fix message type on chunking
-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)) |