From 203d0a09a022a423dcb8a7122130b8fd99bfcaa2 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 29 Jan 2017 14:57:33 +0100 Subject: [PATCH] Catch cases where Sessions have already been removed on either side of the AMP connection. This may remove the annoying Portal errors on the form 'AMP Error for AdminPortal2Server: 1'. Probably unrelated to #1128, but linking to it anyway. --- evennia/server/amp.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/evennia/server/amp.py b/evennia/server/amp.py index edf8cf22ac..e9cf526c11 100644 --- a/evennia/server/amp.py +++ b/evennia/server/amp.py @@ -512,9 +512,10 @@ class AMPProtocol(amp.AMP): server_sessionhandler.portal_session_sync(kwargs.get("sessiondata")) elif operation == PDISCONN: # portal_session_disconnect - # session closed from portal side - session = server_sessionhandler[sessid] - server_sessionhandler.portal_disconnect(session) + # session closed from portal sid + session = server_sessionhandler.get(sessid) + if session: + server_sessionhandler.portal_disconnect(session) elif operation == PDISCONNALL: # portal_disconnect_all # portal orders all sessions to close @@ -566,13 +567,15 @@ class AMPProtocol(amp.AMP): if operation == SLOGIN: # server_session_login # a session has authenticated; sync it. - session = portal_sessionhandler[sessid] - portal_sessionhandler.server_logged_in(session, kwargs.get("sessiondata")) + session = portal_sessionhandler.get(sessid) + if session: + portal_sessionhandler.server_logged_in(session, kwargs.get("sessiondata")) elif operation == SDISCONN: # server_session_disconnect # the server is ordering to disconnect the session - session = portal_sessionhandler[sessid] - portal_sessionhandler.server_disconnect(session, reason=kwargs.get("reason")) + session = portal_sessionhandler.get(sessid) + if session: + portal_sessionhandler.server_disconnect(session, reason=kwargs.get("reason")) elif operation == SDISCONNALL: # server_session_disconnect_all # server orders all sessions to disconnect