diff --git a/evennia/accounts/accounts.py b/evennia/accounts/accounts.py index 3eab69a3ce..915f3dd4e4 100644 --- a/evennia/accounts/accounts.py +++ b/evennia/accounts/accounts.py @@ -839,7 +839,7 @@ class DefaultAccount(with_metaclass(TypeclassBase, AccountDB)): """ # if we have saved protocol flags on ourselves, load them here. - protocol_flags = self.attributes.get("_saved_protocol_flags", None) + protocol_flags = self.attributes.get("_saved_protocol_flags", {}) if session and protocol_flags: session.update_flags(**protocol_flags) diff --git a/evennia/server/amp_client.py b/evennia/server/amp_client.py index a4300adf4d..c5cd57986e 100644 --- a/evennia/server/amp_client.py +++ b/evennia/server/amp_client.py @@ -198,44 +198,47 @@ class AMPServerClientProtocol(amp.AMPMultiConnectionProtocol): operation = kwargs.pop("operation", "") server_sessionhandler = self.factory.server.sessions - if operation == amp.PCONN: # portal_session_connect - # create a new session and sync it - server_sessionhandler.portal_connect(kwargs.get("sessiondata")) + try: + if operation == amp.PCONN: # portal_session_connect + # create a new session and sync it + server_sessionhandler.portal_connect(kwargs.get("sessiondata")) - elif operation == amp.PCONNSYNC: # portal_session_sync - server_sessionhandler.portal_session_sync(kwargs.get("sessiondata")) + elif operation == amp.PCONNSYNC: # portal_session_sync + server_sessionhandler.portal_session_sync(kwargs.get("sessiondata")) - elif operation == amp.PDISCONN: # portal_session_disconnect - # session closed from portal sid - session = server_sessionhandler.get(sessid) - if session: - server_sessionhandler.portal_disconnect(session) + elif operation == amp.PDISCONN: # portal_session_disconnect + # session closed from portal sid + session = server_sessionhandler.get(sessid) + if session: + server_sessionhandler.portal_disconnect(session) - elif operation == amp.PDISCONNALL: # portal_disconnect_all - # portal orders all sessions to close - server_sessionhandler.portal_disconnect_all() + elif operation == amp.PDISCONNALL: # portal_disconnect_all + # portal orders all sessions to close + server_sessionhandler.portal_disconnect_all() - elif operation == amp.PSYNC: # portal_session_sync - # force a resync of sessions from the portal side. This happens on - # first server-connect. - server_restart_mode = kwargs.get("server_restart_mode", "shutdown") - self.factory.server.run_init_hooks(server_restart_mode) - server_sessionhandler.portal_sessions_sync(kwargs.get("sessiondata")) + elif operation == amp.PSYNC: # portal_session_sync + # force a resync of sessions from the portal side. This happens on + # first server-connect. + server_restart_mode = kwargs.get("server_restart_mode", "shutdown") + self.factory.server.run_init_hooks(server_restart_mode) + server_sessionhandler.portal_sessions_sync(kwargs.get("sessiondata")) - elif operation == amp.SRELOAD: # server reload - # shut down in reload mode - server_sessionhandler.all_sessions_portal_sync() - server_sessionhandler.server.shutdown(mode='reload') + elif operation == amp.SRELOAD: # server reload + # shut down in reload mode + server_sessionhandler.all_sessions_portal_sync() + server_sessionhandler.server.shutdown(mode='reload') - elif operation == amp.SRESET: - # shut down in reset mode - server_sessionhandler.all_sessions_portal_sync() - server_sessionhandler.server.shutdown(mode='reset') + elif operation == amp.SRESET: + # shut down in reset mode + server_sessionhandler.all_sessions_portal_sync() + server_sessionhandler.server.shutdown(mode='reset') - elif operation == amp.SSHUTD: # server shutdown - # shutdown in stop mode - server_sessionhandler.server.shutdown(mode='shutdown') + elif operation == amp.SSHUTD: # server shutdown + # shutdown in stop mode + server_sessionhandler.server.shutdown(mode='shutdown') - else: - raise Exception("operation %(op)s not recognized." % {'op': operation}) + else: + raise Exception("operation %(op)s not recognized." % {'op': operation}) + except Exception: + logger.log_trace() return {} diff --git a/evennia/server/session.py b/evennia/server/session.py index eb77321a24..03b4b6abb2 100644 --- a/evennia/server/session.py +++ b/evennia/server/session.py @@ -133,7 +133,7 @@ class Session(object): """ if self.account: - self.protocol_flags.update(self.account.attributes.get("_saved_protocol_flags", {})) + self.protocol_flags.update(self.account.attributes.get("_saved_protocol_flags", None) or {}) # access hooks