diff --git a/evennia/commands/default/system.py b/evennia/commands/default/system.py index e3c248be93..594c615f5a 100644 --- a/evennia/commands/default/system.py +++ b/evennia/commands/default/system.py @@ -118,8 +118,8 @@ class CmdShutdown(COMMAND_DEFAULT_CLASS): announcement += "%s\n" % self.args logger.log_info('Server shutdown by %s.' % self.caller.name) SESSIONS.announce_all(announcement) - SESSIONS.portal_shutdown() SESSIONS.server.shutdown(mode='shutdown') + SESSIONS.portal_shutdown() class CmdPy(COMMAND_DEFAULT_CLASS): diff --git a/evennia/server/amp.py b/evennia/server/amp.py index a6d45e26af..3159b7e871 100644 --- a/evennia/server/amp.py +++ b/evennia/server/amp.py @@ -188,7 +188,6 @@ class AmpClientFactory(protocol.ReconnectingClientFactory): reason (str): Eventual text describing why connection failed. """ - print ("portal retrying connection"), self.maxDelay if hasattr(self, "server_restart_mode"): self.maxDelay = 2 else: @@ -372,6 +371,19 @@ class AMPProtocol(amp.AMP): if hasattr(self.factory, "server_restart_mode"): del self.factory.server_restart_mode + def connectionLost(self, reason): + """ + We swallow connection errors here. The reason is that during a + normal reload/shutdown there will almost always be cases where + either the portal or server shuts down before a message has + returned its (empty) return, triggering a connectionLost error + that is irrelevant. If a true connection error happens, the + portal will continuously try to reconnect, showing the problem + that way. + """ + pass + + # Error handling def errback(self, e, info): diff --git a/evennia/server/portal/portalsessionhandler.py b/evennia/server/portal/portalsessionhandler.py index bdd353d8a8..c987f45d07 100644 --- a/evennia/server/portal/portalsessionhandler.py +++ b/evennia/server/portal/portalsessionhandler.py @@ -188,7 +188,7 @@ class PortalSessionHandler(SessionHandler): # sessions while we are looping over them. sessionhandler._disconnect_all = True for session in sessionhandler.values(): - session.disconnect(session) + session.disconnect() del sessionhandler._disconnect_all # inform Server; wait until finished sending before we continue diff --git a/evennia/server/sessionhandler.py b/evennia/server/sessionhandler.py index 0f17b6d359..0e76aa3213 100644 --- a/evennia/server/sessionhandler.py +++ b/evennia/server/sessionhandler.py @@ -657,8 +657,8 @@ class ServerSessionHandler(SessionHandler): message (str): Message to send. """ - for sess in self.values(): - self.data_out(sess, text=message) + for session in self.values(): + self.data_out(session, text=message) def data_out(self, session, **kwargs): """