diff --git a/evennia/server/sessionhandler.py b/evennia/server/sessionhandler.py index 49d9b46498..423bc87f1c 100644 --- a/evennia/server/sessionhandler.py +++ b/evennia/server/sessionhandler.py @@ -65,6 +65,7 @@ from django.utils.translation import ugettext as _ _SERVERNAME = settings.SERVERNAME _MULTISESSION_MODE = settings.MULTISESSION_MODE _IDLE_TIMEOUT = settings.IDLE_TIMEOUT +_DELAY_CMD_LOGINSTART = settings.DELAY_CMD_LOGINSTART _MAX_SERVER_COMMANDS_PER_SECOND = 100.0 _MAX_SESSION_COMMANDS_PER_SECOND = 5.0 _MODEL_MAP = None @@ -319,12 +320,9 @@ class ServerSessionHandler(SessionHandler): sess.logged_in = False sess.uid = None - # show the first login command - - # this delay is necessary notably for Mudlet, which will fail on the connection screen - # unless the MXP protocol has been negotiated. Unfortunately this may be too short for some - # networks, the symptom is that < and > are not parsed by mudlet on first connection. - delay(0.3, self._run_cmd_login, sess) + # show the first login command, may delay slightly to allow + # the handshakes to finish. + delay(_DELAY_CMD_LOGINSTART, self._run_cmd_login, sess) def portal_session_sync(self, portalsessiondata): """ diff --git a/evennia/settings_default.py b/evennia/settings_default.py index b1e2a7a79e..7ae45c4be2 100644 --- a/evennia/settings_default.py +++ b/evennia/settings_default.py @@ -307,6 +307,14 @@ CMD_IGNORE_PREFIXES = "@&/+" # This module should contain one or more variables # with strings defining the look of the screen. CONNECTION_SCREEN_MODULE = "server.conf.connection_screens" +# Delay to use before sending the evennia.syscmdkeys.CMD_LOGINSTART Command +# when a new session connects (this defaults the unloggedin-look for showing +# the connection screen). The delay is useful mainly for telnet, to allow +# client/server to establish client capabilities like color/mxp etc before +# sending any text. A value of 0.3 should be enough. While a good idea, it may +# cause issues with menu-logins and autoconnects since the menu will not have +# started when the autoconnects starts sending menu commands. +DELAY_CMD_LOGINSTART = 0.3 # An optional module that, if existing, must hold a function # named at_initial_setup(). This hook method can be used to customize # the server's initial setup sequence (the very first startup of the system).