aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/proxy
diff options
context:
space:
mode:
authorrpigott <rpigott@berkeley.edu>2019-01-30 18:12:05 -0800
committerrpigott <rpigott@berkeley.edu>2019-01-30 18:31:44 -0800
commit2af71a4486494b64431558da2e068dc1babe65fa (patch)
treec01b6d76cfb0f345dcc6c2a0d877d8beaf1df602 /mitmproxy/proxy
parent106948d996d74bf5ff7e3511f35eefea0a90561f (diff)
downloadmitmproxy-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.py16
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)