From ced1148275ec3de1107f8043b4cdec78a34fdb4b Mon Sep 17 00:00:00 2001 From: Florian Mounier Date: Tue, 6 Oct 2015 17:01:28 +0200 Subject: [PATCH] Fix server exit while there are active sessions --- butterfly/__init__.py | 2 +- butterfly/routes.py | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/butterfly/__init__.py b/butterfly/__init__.py index dac9044..e6a78bf 100644 --- a/butterfly/__init__.py +++ b/butterfly/__init__.py @@ -14,7 +14,7 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . -__version__ = '2.0.2' +__version__ = '2.0.3' import os diff --git a/butterfly/routes.py b/butterfly/routes.py index 0cb1cba..00695ce 100644 --- a/butterfly/routes.py +++ b/butterfly/routes.py @@ -219,6 +219,9 @@ class TermWebSocket(Route, tornado.websocket.WebSocketHandler): @classmethod def close_all(cls, session, user): + terminals = TermWebSocket.terminals.get(user.name) + del terminals[session] + sessions = TermWebSocket.sessions.get(user.name) if sessions: sockets = sessions[session] @@ -227,9 +230,6 @@ class TermWebSocket(Route, tornado.websocket.WebSocketHandler): socket.close() del sessions[session] - terminals = TermWebSocket.terminals.get(user.name) - del terminals[session] - @classmethod def broadcast(cls, session, message, user): cls.history[session] += message @@ -277,7 +277,10 @@ class TermWebSocket(Route, tornado.websocket.WebSocketHandler): else: self.log.error( 'Socket with neither session nor terminal %r' % self) - if self.application.systemd and not len(TermWebSocket.sockets): + if (self.application.systemd and + not len(TermWebSocket.sockets) and + not sum([len(sessions) + for user, sessions in TermWebSocket.terminals.items()])): sys.exit(0)