diff --git a/src/allmydata/web/_autobahn_1151.py b/src/allmydata/web/_autobahn_1151.py new file mode 100644 index 000000000..837656cf2 --- /dev/null +++ b/src/allmydata/web/_autobahn_1151.py @@ -0,0 +1,27 @@ +""" +Implement a work-around for . +""" + + +from __future__ import ( + print_function, + unicode_literals, + absolute_import, + division, +) + + +from autobahn.websocket.protocol import WebSocketProtocol +_originalConnectionLost = WebSocketProtocol._connectionLost + +def _connectionLost(self, reason): + if self.openHandshakeTimeoutCall is not None: + self.openHandshakeTimeoutCall.cancel() + self.openHandshakeTimeoutCall = None + return _originalConnectionLost(self, reason) + +def patch(): + """ + Monkey-patch the proposed fix into place. + """ + WebSocketProtocol._connectionLost = _connectionLost diff --git a/src/allmydata/web/logs.py b/src/allmydata/web/logs.py index 89a35d3a0..0ba8b17e9 100644 --- a/src/allmydata/web/logs.py +++ b/src/allmydata/web/logs.py @@ -18,6 +18,11 @@ from twisted.web.resource import ( Resource, ) +# Hotfix work-around https://github.com/crossbario/autobahn-python/issues/1151 +from . import _autobahn_1151 +_autobahn_1151.patch() +del _autobahn_1151 + class TokenAuthenticatedWebSocketServerProtocol(WebSocketServerProtocol): """