diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index d705ef2..570ebe9 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | |||
@@ -474,15 +474,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
474 | public virtual void RemoveClientCircuit(uint circuitcode) | 474 | public virtual void RemoveClientCircuit(uint circuitcode) |
475 | { | 475 | { |
476 | EndPoint sendto = null; | 476 | EndPoint sendto = null; |
477 | if (clientCircuits_reverse.Contains(circuitcode)) { | 477 | if (clientCircuits_reverse.Contains(circuitcode)) |
478 | { | ||
478 | sendto = (EndPoint)clientCircuits_reverse[circuitcode]; | 479 | sendto = (EndPoint)clientCircuits_reverse[circuitcode]; |
479 | 480 | ||
480 | clientCircuits_reverse.Remove(circuitcode); | 481 | clientCircuits_reverse.Remove(circuitcode); |
481 | 482 | ||
482 | lock (clientCircuits) { | 483 | lock (clientCircuits) |
483 | clientCircuits.Remove(sendto); | 484 | { |
485 | if (sendto != null) | ||
486 | { | ||
487 | clientCircuits.Remove(sendto); | ||
488 | } | ||
489 | else | ||
490 | { | ||
491 | m_log.DebugFormat( | ||
492 | "[UDPSERVER]: endpoint for circuit code {0} in RemoveClientCircuit() was unexpectedly null!", circuitcode); | ||
493 | } | ||
484 | } | 494 | } |
485 | lock (proxyCircuits) { | 495 | lock (proxyCircuits) |
496 | { | ||
486 | proxyCircuits.Remove(circuitcode); | 497 | proxyCircuits.Remove(circuitcode); |
487 | } | 498 | } |
488 | } | 499 | } |