diff --git a/src/commands/default/general.py b/src/commands/default/general.py index 8282125f7d..5511f627ce 100644 --- a/src/commands/default/general.py +++ b/src/commands/default/general.py @@ -395,9 +395,15 @@ class CmdQuit(MuxCommand): def func(self): "hook function" - for session in self.caller.sessions: - session.msg("{RQuitting{n. Hope to see you soon again.") - session.session_disconnect() + if hasattr(self.caller, "player"): + player = self.caller.player + else: + player = self.caller + + player.msg("{RQuitting{n. Hope to see you soon again.", sessid=self.sessid) + player.disconnect_session_from_player(self.sessid) + #for session in self.caller.sessions: + # session.session_disconnect() class CmdWho(MuxCommand): """ diff --git a/src/players/models.py b/src/players/models.py index f2b1c3b222..813b089688 100644 --- a/src/players/models.py +++ b/src/players/models.py @@ -423,6 +423,15 @@ class PlayerDB(TypedObject): # a non-character session; this goes to player directly _GA(self, "execute_cmd")(ingoing_string, sessid=sessid) + def disconnect_session_from_player(self, sessid): + """ + Access method for disconnecting a given session from the player. + """ + global _SESSIONS + if not _SESSIONS: + from src.server.sessionhandler import SESSIONS as _SESSIONS + _SESSIONS.disconnect(sessid=sessid) + def connect_session_to_character(self, sessid, character, force=False): """ Connect the given session to a character through this player. diff --git a/src/server/serversession.py b/src/server/serversession.py index 5fb3d64964..caf46eb765 100644 --- a/src/server/serversession.py +++ b/src/server/serversession.py @@ -57,7 +57,6 @@ class ServerSession(Session): self.cmdset.update(init_mode=True) return - def session_login(self, player): """ Startup mechanisms that need to run at login. This is called