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:
parent
9f61f8e3bf
commit
36629a8bdb
3 changed files with 13 additions and 6 deletions
|
|
@ -64,6 +64,14 @@ class PortalSessionHandler(SessionHandler):
|
|||
# only use if session already has sessid (i.e. has already connected)
|
||||
sessdata = session.get_sync_data()
|
||||
if self.portal.amp_protocol:
|
||||
# we remove sessdata that could already have changed on the
|
||||
# server level
|
||||
sessdata = dict((key, val) for key, val in sessdata.items() if key in ("protocol_key",
|
||||
"address",
|
||||
"suid",
|
||||
"conn_time",
|
||||
"protocol_flags",
|
||||
"server_data",))
|
||||
self.portal.amp_protocol.call_remote_ServerAdmin(session.sessid,
|
||||
operation=PCONNSYNC,
|
||||
data=sessdata)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue