aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-10-17 19:08:53 +0000
committerJustin Clarke Casey2008-10-17 19:08:53 +0000
commit84492fee01d786cb28bed3a91148b1be9168a54a (patch)
tree1c5c042f3a641c8b242ba870acd55cbe78cc72f7 /OpenSim
parentFixed llDeleteSubList; the indices were swapped (Fixes Mantis#2399). (diff)
downloadopensim-SC-84492fee01d786cb28bed3a91148b1be9168a54a.zip
opensim-SC-84492fee01d786cb28bed3a91148b1be9168a54a.tar.gz
opensim-SC-84492fee01d786cb28bed3a91148b1be9168a54a.tar.bz2
opensim-SC-84492fee01d786cb28bed3a91148b1be9168a54a.tar.xz
* Temporarily resume creation of IPEndPoint on every call
* This widened what I think is an existing race condition where asynchronous recieves could potentially stomp on each other's end points (though this must occur very rarely, if at all, in reality)
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs12
1 files changed, 7 insertions, 5 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index 2a907cc..26a77e4 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -176,10 +176,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
176 protected virtual void OnReceivedData(IAsyncResult result) 176 protected virtual void OnReceivedData(IAsyncResult result)
177 { 177 {
178 Packet packet = null; 178 Packet packet = null;
179
180 int numBytes = 1; 179 int numBytes = 1;
181
182 bool ok = false; 180 bool ok = false;
181 reusedEpSender = new IPEndPoint(IPAddress.Any, 0);
183 182
184 try 183 try
185 { 184 {
@@ -451,9 +450,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
451 { 450 {
452 // find the endpoint for this circuit 451 // find the endpoint for this circuit
453 EndPoint sendto; 452 EndPoint sendto;
454 try { 453 try
454 {
455 sendto = (EndPoint)clientCircuits_reverse[circuitcode]; 455 sendto = (EndPoint)clientCircuits_reverse[circuitcode];
456 } catch { 456 }
457 catch
458 {
457 // Exceptions here mean there is no circuit 459 // Exceptions here mean there is no circuit
458 m_log.Warn("[CLIENT]: Circuit not found, not sending packet"); 460 m_log.Warn("[CLIENT]: Circuit not found, not sending packet");
459 return; 461 return;
@@ -525,7 +527,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
525 if (!clientCircuits.ContainsKey(userEP)) 527 if (!clientCircuits.ContainsKey(userEP))
526 clientCircuits.Add(userEP, useCircuit.CircuitCode.Code); 528 clientCircuits.Add(userEP, useCircuit.CircuitCode.Code);
527 else 529 else
528 m_log.Error("[CLIENT]: clientCircuits already contans entry for user " + useCircuit.CircuitCode.Code + ". NOT adding."); 530 m_log.Error("[CLIENT]: clientCircuits already contains entry for user " + useCircuit.CircuitCode.Code + ". NOT adding.");
529 } 531 }
530 532
531 // This data structure is synchronized, so we don't need the lock 533 // This data structure is synchronized, so we don't need the lock