From 5ee192b75896b7527372943655c393c447f9caaf Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Tue, 29 Nov 2016 21:00:42 +0100 Subject: websocket: fix empty frame with fin=1 --- mitmproxy/proxy/protocol/websocket.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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)) -- cgit v1.2.3