From 8d8d6cd8caa4e9f918a4f38610c59ecbb3f16cb9 Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Thu, 23 Apr 2020 19:57:39 -0700 Subject: [PATCH] Spinning off sessid generation to make overloading easier. --- evennia/server/portal/portalsessionhandler.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/evennia/server/portal/portalsessionhandler.py b/evennia/server/portal/portalsessionhandler.py index 8afbdb3780..88ecddb883 100644 --- a/evennia/server/portal/portalsessionhandler.py +++ b/evennia/server/portal/portalsessionhandler.py @@ -70,6 +70,18 @@ class PortalSessionHandler(SessionHandler): """ self.connection_time = time.time() + def generate_sessid(self): + """ + Simply generates a sessid that's guaranteed to be unique for this Portal run. + + Returns: + sessid + """ + self.latest_sessid += 1 + if self.latest_sessid in self: + return self.generate_sessid() + return self.latest_sessid + def connect(self, session): """ Called by protocol at first connect. This adds a not-yet @@ -93,8 +105,7 @@ class PortalSessionHandler(SessionHandler): if not session.sessid: # if the session already has a sessid (e.g. being inherited in the # case of a webclient auto-reconnect), keep it - self.latest_sessid += 1 - session.sessid = self.latest_sessid + session.sessid = self.generate_sessid() session.server_connected = False _CONNECTION_QUEUE.appendleft(session) if len(_CONNECTION_QUEUE) > 1: