From 104e97367c74d2b4b7acc8498a76411a62ac8e5b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 2 Nov 2015 20:44:22 +0530 Subject: [PATCH] Parse Connection header properly when checking for upgrade to WebSocket --- src/calibre/srv/web_socket.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/calibre/srv/web_socket.py b/src/calibre/srv/web_socket.py index fcea75c533..c12a1b482e 100644 --- a/src/calibre/srv/web_socket.py +++ b/src/calibre/srv/web_socket.py @@ -269,10 +269,10 @@ class WebSocketConnection(HTTPConnection): self.stop_reading = False def finalize_headers(self, inheaders): - upgrade = inheaders.get('Upgrade', None) + upgrade = inheaders.get('Upgrade', '') key = inheaders.get('Sec-WebSocket-Key', None) - conn = inheaders.get('Connection', None) - if key is None or upgrade.lower() != 'websocket' or conn != 'Upgrade': + conn = {x.strip().lower() for x in inheaders.get('Connection', '').split(',')} + if key is None or upgrade.lower() != 'websocket' or 'upgrade' not in conn: return HTTPConnection.finalize_headers(self, inheaders) ver = inheaders.get('Sec-WebSocket-Version', 'Unknown') try: