From f0f240b7cef45d02e6562f3c8f61c2e6abc96fc6 Mon Sep 17 00:00:00 2001 From: Griatch Date: Wed, 20 Jun 2012 23:48:19 +0200 Subject: [PATCH] Fixed a bug in sessionhandler that erroneously caused Portal sessions to not be deleted properly at user @quit. This caused the session to be copied back to the Server side after a reload (caused "ghost" connections in e.g. the "who" command). Resolves Issue 244. --- src/commands/default/general.py | 2 +- src/server/sessionhandler.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/commands/default/general.py b/src/commands/default/general.py index 79f874bb82..d2614309b2 100644 --- a/src/commands/default/general.py +++ b/src/commands/default/general.py @@ -408,7 +408,7 @@ class CmdWho(MuxCommand): table[0].append(plr_pobject.name[:25]) table[1].append(utils.time_format(delta_conn, 0)) table[2].append(utils.time_format(delta_cmd, 1)) - table[3].append(plr_pobject.location.id) + table[3].append(plr_pobject.location and plr_pobject.location.id or "None") table[4].append(session.cmd_total) table[5].append(session.address[0]) else: diff --git a/src/server/sessionhandler.py b/src/server/sessionhandler.py index bba1607d22..562f977e32 100644 --- a/src/server/sessionhandler.py +++ b/src/server/sessionhandler.py @@ -379,6 +379,9 @@ class PortalSessionHandler(SessionHandler): session = self.sessions.get(sessid, None) if session: session.disconnect(reason) + if sessid in self.sessions: + # in case sess.disconnect doesn't delete it + del self.sessions[sessid] del session def server_disconnect_all(self, reason=""): @@ -388,7 +391,7 @@ class PortalSessionHandler(SessionHandler): for session in self.sessions.values(): session.disconnect(reason) del session - + self.sessions = {} def count_loggedin(self, include_unloggedin=False): """