diff options
author | rpigott <rpigott@berkeley.edu> | 2019-01-30 18:12:05 -0800 |
---|---|---|
committer | rpigott <rpigott@berkeley.edu> | 2019-01-30 18:31:44 -0800 |
commit | 2af71a4486494b64431558da2e068dc1babe65fa (patch) | |
tree | c01b6d76cfb0f345dcc6c2a0d877d8beaf1df602 /mitmproxy/proxy | |
parent | 106948d996d74bf5ff7e3511f35eefea0a90561f (diff) | |
download | mitmproxy-2af71a4486494b64431558da2e068dc1babe65fa.tar.gz mitmproxy-2af71a4486494b64431558da2e068dc1babe65fa.tar.bz2 mitmproxy-2af71a4486494b64431558da2e068dc1babe65fa.zip |
Separate client and server PerMessageDefalte extension per #3460
Diffstat (limited to 'mitmproxy/proxy')
-rw-r--r-- | mitmproxy/proxy/protocol/websocket.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/mitmproxy/proxy/protocol/websocket.py b/mitmproxy/proxy/protocol/websocket.py index 591bae7e..fd2aed15 100644 --- a/mitmproxy/proxy/protocol/websocket.py +++ b/mitmproxy/proxy/protocol/websocket.py @@ -53,24 +53,28 @@ class WebSocketLayer(base.Layer): self.connections: dict[object, WSConnection] = {} - extensions = [] + client_extensions = [] + server_extensions = [] if 'Sec-WebSocket-Extensions' in handshake_flow.response.headers: if PerMessageDeflate.name in handshake_flow.response.headers['Sec-WebSocket-Extensions']: - extensions = [PerMessageDeflate()] + client_extensions = [PerMessageDeflate()] + server_extensions = [PerMessageDeflate()] self.connections[self.client_conn] = WSConnection(ConnectionType.SERVER) self.connections[self.server_conn] = WSConnection(ConnectionType.CLIENT) - if extensions: - extensions[0].finalize(handshake_flow.response.headers['Sec-WebSocket-Extensions']) + if client_extensions: + client_extensions[0].finalize(handshake_flow.response.headers['Sec-WebSocket-Extensions']) + if server_extensions: + server_extensions[0].finalize(handshake_flow.response.headers['Sec-WebSocket-Extensions']) - request = Request(extensions = extensions, host = handshake_flow.request.host, target = handshake_flow.request.path) + request = Request(extensions = client_extensions, host = handshake_flow.request.host, target = handshake_flow.request.path) data = self.connections[self.server_conn].send(request) self.connections[self.client_conn].receive_data(data) event = next(self.connections[self.client_conn].events()) assert isinstance(event, events.Request) - data = self.connections[self.client_conn].send(AcceptConnection(extensions=extensions)) + data = self.connections[self.client_conn].send(AcceptConnection(extensions=server_extensions)) self.connections[self.server_conn].receive_data(data) assert isinstance(next(self.connections[self.server_conn].events()), events.AcceptConnection) |