From 40496eb9d16137a3bbc643c4e7ff542290ceaea2 Mon Sep 17 00:00:00 2001 From: Florian Mounier Date: Tue, 21 Feb 2017 11:14:04 +0100 Subject: [PATCH] Protect session closing. References #124 --- butterfly/routes.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/butterfly/routes.py b/butterfly/routes.py index 6a9414b..d913c09 100644 --- a/butterfly/routes.py +++ b/butterfly/routes.py @@ -283,14 +283,19 @@ class TermWebSocket(Route, KeptAliveWebSocketHandler): @classmethod def close_session(cls, session): - wsockets = (cls.sessions.get(session) + - TermCtlWebSocket.sessions.get(session)) + wsockets = (cls.sessions.get(session, []) + + TermCtlWebSocket.sessions.get(session, [])) for wsocket in wsockets: wsocket.on_close() + wsocket.close() - del cls.sessions[session] - del TermCtlWebSocket.sessions_secure_users[session] - del TermCtlWebSocket.sessions[session] + + if session in cls.sessions: + del cls.sessions[session] + if session in TermCtlWebSocket.sessions_secure_users: + del TermCtlWebSocket.sessions_secure_users[session] + if session in TermCtlWebSocket.sessions: + del TermCtlWebSocket.sessions[session] @classmethod def broadcast(cls, session, message, emitter=None):