From c3eb08f187ba8d078bbec4a7b6af40c0079ce295 Mon Sep 17 00:00:00 2001 From: ElRoberto538 Date: Tue, 30 May 2017 23:33:52 +1200 Subject: [PATCH] Added optional parameter to Server and HTTPFactory to allow Autobahn openHandshakeTimeout to be overridden --- daphne/http_protocol.py | 3 ++- daphne/server.py | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/daphne/http_protocol.py b/daphne/http_protocol.py index 0b5ffe2..694bc22 100755 --- a/daphne/http_protocol.py +++ b/daphne/http_protocol.py @@ -308,7 +308,7 @@ class HTTPFactory(http.HTTPFactory): routed appropriately. """ - def __init__(self, channel_layer, action_logger=None, send_channel=None, timeout=120, websocket_timeout=86400, ping_interval=20, ping_timeout=30, ws_protocols=None, root_path="", websocket_connect_timeout=30, proxy_forwarded_address_header=None, proxy_forwarded_port_header=None): + def __init__(self, channel_layer, action_logger=None, send_channel=None, timeout=120, websocket_timeout=86400, ping_interval=20, ping_timeout=30, ws_protocols=None, root_path="", websocket_connect_timeout=30, proxy_forwarded_address_header=None, proxy_forwarded_port_header=None, ws_open_handshake_timeout=5): http.HTTPFactory.__init__(self) self.channel_layer = channel_layer self.action_logger = action_logger @@ -327,6 +327,7 @@ class HTTPFactory(http.HTTPFactory): self.ws_factory.setProtocolOptions( autoPingTimeout=ping_timeout, allowNullOrigin=True, + openHandshakeTimeout=ws_open_handshake_timeout ) self.ws_factory.protocol = WebSocketProtocol self.ws_factory.reply_protocols = self.reply_protocols diff --git a/daphne/server.py b/daphne/server.py index d3fb754..4631cf6 100755 --- a/daphne/server.py +++ b/daphne/server.py @@ -37,7 +37,8 @@ class Server(object): proxy_forwarded_address_header=None, proxy_forwarded_port_header=None, force_sync=False, - verbosity=1 + verbosity=1, + ws_open_handshake_timeout=5 ): self.channel_layer = channel_layer self.endpoints = endpoints or [] @@ -69,6 +70,7 @@ class Server(object): # channel layer's group_expiry value if present, or one day if not. self.websocket_timeout = websocket_timeout or getattr(channel_layer, "group_expiry", 86400) self.websocket_connect_timeout = websocket_connect_timeout + self.ws_open_handshake_timeout = ws_open_handshake_timeout self.ws_protocols = ws_protocols self.root_path = root_path self.force_sync = force_sync @@ -92,7 +94,8 @@ class Server(object): ws_protocols=self.ws_protocols, root_path=self.root_path, proxy_forwarded_address_header=self.proxy_forwarded_address_header, - proxy_forwarded_port_header=self.proxy_forwarded_port_header + proxy_forwarded_port_header=self.proxy_forwarded_port_header, + ws_open_handshake_timeout=self.ws_open_handshake_timeout ) if self.verbosity <= 1: # Redirect the Twisted log to nowhere