From 6e561d95a1ae525d2762d6cb7f5f39f777c871fe Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 20 Jan 2020 19:37:09 +0100 Subject: [PATCH] Fix idle-timeout loop to avoid modifying the SESSIONS dict in-place. Resolves #1992 --- evennia/server/server.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/evennia/server/server.py b/evennia/server/server.py index 4bbf3aee0f..33cdf66be7 100644 --- a/evennia/server/server.py +++ b/evennia/server/server.py @@ -148,13 +148,17 @@ def _server_maintenance(): # handle idle timeouts if _IDLE_TIMEOUT > 0: reason = _("idle timeout exceeded") + to_disconnect = [] for session in ( sess for sess in SESSIONS.values() if (now - sess.cmd_last) > _IDLE_TIMEOUT ): if not session.account or not session.account.access( session.account, "noidletimeout", default=False ): - SESSIONS.disconnect(session, reason=reason) + to_disconnect.append(session) + + for session in to_disconnect: + SESSIONS.disconnect(session, reason=reason) # ------------------------------------------------------------