Fixed a race condition when the telnet protocol synced with the server with a delay (such as when the connecting client didn't respond to all protocol request tokens. This could lead to the sync overwriting already updated session flags, notably the puppet id (puid). Resolves #583.

This commit is contained in:
Griatch 2014-10-19 19:11:56 +02:00
parent 9f61f8e3bf
commit 36629a8bdb
3 changed files with 13 additions and 6 deletions

View file

@ -220,6 +220,11 @@ class ServerSessionHandler(SessionHandler):
sessid = portalsessiondata.get("sessid")
session = self.sessions.get(sessid)
if session:
# since some of the session properties may have had
# a chance to change already before the portal gets here
# the portal doesn't send all sessiondata here, but only
# ones which should only be changed from portal (like
# protocol_flags etc)
session.load_sync_data(portalsessiondata)
def portal_disconnect(self, sessid):