diff options
author | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2016-11-29 21:00:42 +0100 |
---|---|---|
committer | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2016-11-29 21:00:42 +0100 |
commit | 5ee192b75896b7527372943655c393c447f9caaf (patch) | |
tree | 4184f889e2053f32780e7ccb8e9628b264d2abbc | |
parent | 34bf3a2496ee82e1142547b95b28a0918a911bff (diff) | |
download | mitmproxy-5ee192b75896b7527372943655c393c447f9caaf.tar.gz mitmproxy-5ee192b75896b7527372943655c393c447f9caaf.tar.bz2 mitmproxy-5ee192b75896b7527372943655c393c447f9caaf.zip |
websocket: fix empty frame with fin=1
-rw-r--r-- | mitmproxy/proxy/protocol/websocket.py | 10 |
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)) |