aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Kriechbaumer <thomas@kriechbaumer.name>2016-11-29 22:13:59 +0100
committerThomas Kriechbaumer <thomas@kriechbaumer.name>2016-11-29 22:13:59 +0100
commitbd8ae910d23821cc88437f486cf9eb3f2bef9470 (patch)
tree757817604fdafb04502fa759e9829ea3b8c3de37
parent6e15e766c579b179e3ae6e06197670f5d573bb40 (diff)
downloadmitmproxy-bd8ae910d23821cc88437f486cf9eb3f2bef9470.tar.gz
mitmproxy-bd8ae910d23821cc88437f486cf9eb3f2bef9470.tar.bz2
mitmproxy-bd8ae910d23821cc88437f486cf9eb3f2bef9470.zip
websocket: fix message type on chunking
-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))