Mantis#2106. Thank you kindly, HomerHorwitz for a patch that:
The attached patch fixes connectivety checking of root- and child-agents. If an agent's client isn't sending any packets for some time (not even to StartPingCheck packets), we assume that we lost connection and try to log them out.0.6.0-stable
							parent
							
								
									98da84c851
								
							
						
					
					
						commit
						e044d83679
					
				|  | @ -94,6 +94,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
| 
 | ||||
|         private bool m_SendLogoutPacketWhenClosing = true; | ||||
| 
 | ||||
|         private int m_inPacketsChecked = 0; | ||||
| 
 | ||||
|         /* protected variables */ | ||||
| 
 | ||||
|         protected static Dictionary<PacketType, PacketMethod> PacketHandlers = | ||||
|  | @ -670,11 +672,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
|         /// <param name="e"></param> | ||||
|         protected void CheckClientConnectivity(object sender, ElapsedEventArgs e) | ||||
|         { | ||||
|             if (m_PacketHandler.PacketsReceived == m_PacketHandler.PacketsReceivedReported) | ||||
|             if (m_PacketHandler.PacketsReceived == m_inPacketsChecked) | ||||
|             { | ||||
|                 // no packet came in since the last time we checked... | ||||
|                  | ||||
|                 m_probesWithNoIngressPackets++; | ||||
|                 if ((m_probesWithNoIngressPackets > 30 && !m_clientBlocked) | ||||
|                     || (m_probesWithNoIngressPackets > 90 && m_clientBlocked)) | ||||
|                 if ((m_probesWithNoIngressPackets > 30 && !m_clientBlocked)    // agent active | ||||
|                     || (m_probesWithNoIngressPackets > 90 && m_clientBlocked)) // agent paused  | ||||
|                 { | ||||
|                     m_clientPingTimer.Enabled = false; | ||||
| 
 | ||||
|  | @ -697,6 +701,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
|             { | ||||
|                 // Something received in the meantime - we can reset the counters | ||||
|                 m_probesWithNoIngressPackets = 0; | ||||
|                 // ... and store the current number of packets received to find out if another one got in on the next cycle  | ||||
|                 m_inPacketsChecked = m_PacketHandler.PacketsReceived; | ||||
|             } | ||||
| 
 | ||||
|         } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Charles Krinke
						Charles Krinke