diff --git a/evennia/server/amp.py b/evennia/server/amp.py index 3159b7e871..c75396d27d 100644 --- a/evennia/server/amp.py +++ b/evennia/server/amp.py @@ -435,7 +435,9 @@ class AMPProtocol(amp.AMP): """ sessid, kwargs = loads(packed_data) - self.factory.server.sessions.data_in(self.factory.server.sessions[sessid], **kwargs) + session = self.factory.server.sessions.get(sessid, None) + if session: + self.factory.server.sessions.data_in(session, **kwargs) return {} def send_MsgPortal2Server(self, session, **kwargs): @@ -464,7 +466,9 @@ class AMPProtocol(amp.AMP): packed_data (str): Pickled data (sessid, kwargs) coming over the wire. """ sessid, kwargs = loads(packed_data) - self.factory.portal.sessions.data_out(self.factory.portal.sessions[sessid], **kwargs) + session = self.factory.portal.sessions.get(sessid, None) + if session: + self.factory.portal.sessions.data_out(session, **kwargs) return {} diff --git a/evennia/server/portal/portal.py b/evennia/server/portal/portal.py index 17c26c2c25..1e7d9d33b8 100644 --- a/evennia/server/portal/portal.py +++ b/evennia/server/portal/portal.py @@ -87,7 +87,7 @@ def _portal_maintenance(): reason = "Idle timeout exceeded, disconnecting." for session in [sess for sess in PORTAL_SESSIONS.values() if (now - sess.cmd_last) > _IDLE_TIMEOUT]: - session.data_out(text=[[reason], {}]) + session.disconnect(reason=reason) PORTAL_SESSIONS.disconnect(session) if _IDLE_TIMEOUT > 0: