@@ -52,7 +52,6 @@ async def connect(self, host, circuitCode):
5252 self .send (msg , True )
5353
5454 async def handleSystemMessages (self , msg ):
55- self .lastMessage = time .time ()
5655 if msg .name == "PacketAck" :
5756 acks = []
5857 for ack in msg .Packets :
@@ -73,10 +72,10 @@ async def handleSystemMessages(self, msg):
7372 del self .pendingPings [msg .PingID .PingID ]
7473
7574 elif msg .name == "RegionHandshake" :
76- logger .debug (f"Received handshake for { self } " )
7775 self .name = msg .RegionInfo .SimName .rstrip (b"\0 " ).decode ()
7876 self .owner = msg .RegionInfo .SimOwner
7977 self .id = msg .RegionInfo2 .RegionID
78+ logger .debug (f"Received handshake for { self } " )
8079
8180 msg = self .messageTemplate .getMessage ("RegionHandshakeReply" )
8281 msg .AgentData .AgentID = self .agent .agentId
@@ -92,6 +91,7 @@ async def handleMessage(self, addr, body):
9291 if addr != self .host :
9392 return
9493
94+ self .lastMessage = time .time ()
9595 msg = self .messageTemplate .loadMessage (body )
9696 await self .handleSystemMessages (msg )
9797
@@ -126,26 +126,29 @@ async def ping(self, timeout = 5.0, forceUsePingCheck = False):
126126 loop = asyncio .get_running_loop ()
127127 future = loop .create_future ()
128128
129+ currentPing = self .pingSequence
130+ self .pingSequence = (currentPing + 1 ) & 0xFF
131+
129132 # If it exists at this point, it's probably not ever going to
130133 # come in
131- if self . pingSequence in self .pendingPings :
132- old_future = self .pendingPings [self . pingSequence ]
134+ if currentPing in self .pendingPings :
135+ old_future = self .pendingPings [currentPing ]
133136 if not old_future .done ():
134137 old_future .set_result (False )
135- del self .pendingPings [self . pingSequence ]
138+ del self .pendingPings [currentPing ]
136139
137140 msg = self .messageTemplate .getMessage ("StartPingCheck" )
138- msg .PingID .PingID = self . pingSequence
141+ msg .PingID .PingID = currentPing
139142
140143 self .pendingPings [msg .PingID .PingID ] = future
141- self .pingSequence = (self .pingSequence + 1 ) & 0xFF
142144
143145 self .send (msg )
144146
145147 try :
146148 await asyncio .wait_for (future , timeout = timeout )
147149 except asyncio .TimeoutError :
148- del self .pendingPings [msg .PingID .PingID ]
150+ if msg .PingID .PingID in self .pendingPings :
151+ del self .pendingPings [msg .PingID .PingID ]
149152 return False
150153
151154 return True
0 commit comments