diff --git a/test_websocket.py b/test_websocket.py index ee1855d..220b133 100644 --- a/test_websocket.py +++ b/test_websocket.py @@ -500,3 +500,14 @@ def test_connectionLost(self): """ self.request.connectionLost(Failure(CONNECTION_DONE)) self.handler.lostReason.trap(ConnectionDone) + + def test_loseConnection_and_connectionLost(self): + """ + L{Request.connectionLost} called after + L{WebSocketTransport.loseConnection} does not cause problems. + """ + self.handler.transport.loseConnection() + # loseConnection() on the transport will disconnect the request, and it + # will get its connectionLost method fired + self.request.connectionLost(Failure(CONNECTION_DONE)) + self.assertTrue(self.channel.transport.disconnected) diff --git a/websocket.py b/websocket.py index 5cae1d3..6cf1162 100644 --- a/websocket.py +++ b/websocket.py @@ -367,9 +367,6 @@ def loseConnection(self): Close the connection. """ self._request.transport.loseConnection() - del self._request.transport - del self._request - del self._handler class WebSocketHandler(object): """