diff options
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.cs | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index e4f28db..a67c247 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs | |||
@@ -73,6 +73,8 @@ namespace OpenSim.Region.ClientStack | |||
73 | private int m_cachedTextureSerial = 0; | 73 | private int m_cachedTextureSerial = 0; |
74 | private Timer m_clientPingTimer; | 74 | private Timer m_clientPingTimer; |
75 | 75 | ||
76 | private bool m_clientBlocked = false; | ||
77 | |||
76 | private int m_packetsReceived = 0; | 78 | private int m_packetsReceived = 0; |
77 | private int m_lastPacketsReceivedSentToScene = 0; | 79 | private int m_lastPacketsReceivedSentToScene = 0; |
78 | private int m_unAckedBytes = 0; | 80 | private int m_unAckedBytes = 0; |
@@ -569,8 +571,9 @@ namespace OpenSim.Region.ClientStack | |||
569 | if (m_packetsReceived == m_lastPacketsReceived) | 571 | if (m_packetsReceived == m_lastPacketsReceived) |
570 | { | 572 | { |
571 | m_probesWithNoIngressPackets++; | 573 | m_probesWithNoIngressPackets++; |
572 | if (m_probesWithNoIngressPackets > 30) | 574 | if ((m_probesWithNoIngressPackets > 30 && !m_clientBlocked) || (m_probesWithNoIngressPackets > 90 && m_clientBlocked)) |
573 | { | 575 | { |
576 | |||
574 | if (OnConnectionClosed != null) | 577 | if (OnConnectionClosed != null) |
575 | { | 578 | { |
576 | OnConnectionClosed(this); | 579 | OnConnectionClosed(this); |
@@ -3336,6 +3339,18 @@ namespace OpenSim.Region.ClientStack | |||
3336 | m_packetQueue.SetThrottleFromClient(atpack.Throttle.Throttles); | 3339 | m_packetQueue.SetThrottleFromClient(atpack.Throttle.Throttles); |
3337 | break; | 3340 | break; |
3338 | 3341 | ||
3342 | case PacketType.AgentPause: | ||
3343 | m_probesWithNoIngressPackets = 0; | ||
3344 | m_clientBlocked = true; | ||
3345 | break; | ||
3346 | |||
3347 | case PacketType.AgentResume: | ||
3348 | m_probesWithNoIngressPackets = 0; | ||
3349 | m_clientBlocked = false; | ||
3350 | SendStartPingCheck(0); | ||
3351 | |||
3352 | break; | ||
3353 | |||
3339 | #endregion | 3354 | #endregion |
3340 | 3355 | ||
3341 | #region Objects/m_sceneObjects | 3356 | #region Objects/m_sceneObjects |
@@ -4316,14 +4331,14 @@ namespace OpenSim.Region.ClientStack | |||
4316 | // TODO: handle this packet | 4331 | // TODO: handle this packet |
4317 | m_log.Warn("[CLIENT]: unhandled MapItemRequest packet"); | 4332 | m_log.Warn("[CLIENT]: unhandled MapItemRequest packet"); |
4318 | break; | 4333 | break; |
4319 | case PacketType.AgentResume: | 4334 | //case PacketType.AgentResume: |
4320 | // TODO: handle this packet | 4335 | // TODO: handle this packet |
4321 | m_log.Warn("[CLIENT]: unhandled AgentResume packet"); | 4336 | //m_log.Warn("[CLIENT]: unhandled AgentResume packet"); |
4322 | break; | 4337 | //break; |
4323 | case PacketType.AgentPause: | 4338 | //case PacketType.AgentPause: |
4324 | // TODO: handle this packet | 4339 | // TODO: handle this packet |
4325 | m_log.Warn("[CLIENT]: unhandled AgentPause packet"); | 4340 | //m_log.Warn("[CLIENT]: unhandled AgentPause packet"); |
4326 | break; | 4341 | //break; |
4327 | case PacketType.TransferAbort: | 4342 | case PacketType.TransferAbort: |
4328 | // TODO: handle this packet | 4343 | // TODO: handle this packet |
4329 | m_log.Warn("[CLIENT]: unhandled TransferAbort packet"); | 4344 | m_log.Warn("[CLIENT]: unhandled TransferAbort packet"); |