aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Kriechbaumer <thomas@kriechbaumer.name>2016-11-29 21:00:42 +0100
committerThomas Kriechbaumer <thomas@kriechbaumer.name>2016-11-29 21:00:42 +0100
commit5ee192b75896b7527372943655c393c447f9caaf (patch)
tree4184f889e2053f32780e7ccb8e9628b264d2abbc
parent34bf3a2496ee82e1142547b95b28a0918a911bff (diff)
downloadmitmproxy-5ee192b75896b7527372943655c393c447f9caaf.tar.gz
mitmproxy-5ee192b75896b7527372943655c393c447f9caaf.tar.bz2
mitmproxy-5ee192b75896b7527372943655c393c447f9caaf.zip
websocket: fix empty frame with fin=1
-rw-r--r--mitmproxy/proxy/protocol/websocket.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/mitmproxy/proxy/protocol/websocket.py b/mitmproxy/proxy/protocol/websocket.py
index 15d9a288..c94763e0 100644
--- a/mitmproxy/proxy/protocol/websocket.py
+++ b/mitmproxy/proxy/protocol/websocket.py
@@ -82,7 +82,15 @@ class WebSocketLayer(base.Layer):
mask=(False if is_server else 1),
masking_key=(b'' if is_server else os.urandom(4))) for i in chunks
]
- frms[-1].header.fin = 1
+
+ if len(frms) > 0:
+ frms[-1].header.fin = True
+ else:
+ frms.append(websockets.Frame(
+ fin=True,
+ opcode=frame.header.opcode,
+ mask=(False if is_server else 1),
+ masking_key=(b'' if is_server else os.urandom(4))))
for frm in frms:
other_conn.send(bytes(frm))