aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs28
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs122
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs2
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs4
4 files changed, 78 insertions, 78 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 3fa26e4..7141e13 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -4737,51 +4737,51 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4737 requestID = new LLUUID(transfer.TransferInfo.Params, 80); 4737 requestID = new LLUUID(transfer.TransferInfo.Params, 80);
4738 if (!(((Scene)m_scene).ExternalChecks.ExternalChecksBypassPermissions())) 4738 if (!(((Scene)m_scene).ExternalChecks.ExternalChecksBypassPermissions()))
4739 { 4739 {
4740 if(taskID != LLUUID.Zero) // Prim 4740 if (taskID != LLUUID.Zero) // Prim
4741 { 4741 {
4742 SceneObjectPart part = ((Scene)m_scene).GetSceneObjectPart(taskID); 4742 SceneObjectPart part = ((Scene)m_scene).GetSceneObjectPart(taskID);
4743 if(part == null) 4743 if (part == null)
4744 break; 4744 break;
4745 4745
4746 if(part.OwnerID != AgentId) 4746 if (part.OwnerID != AgentId)
4747 break; 4747 break;
4748 4748
4749 if((part.OwnerMask & (uint)PermissionMask.Modify) == 0) 4749 if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
4750 break; 4750 break;
4751 4751
4752 TaskInventoryItem ti = part.GetInventoryItem(itemID); 4752 TaskInventoryItem ti = part.GetInventoryItem(itemID);
4753 if(ti == null) 4753 if (ti == null)
4754 break; 4754 break;
4755 4755
4756 if(ti.OwnerID != AgentId) 4756 if (ti.OwnerID != AgentId)
4757 break; 4757 break;
4758 4758
4759 if((ti.OwnerMask & ((uint)PermissionMask.Modify| (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) != ((uint)PermissionMask.Modify| (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) 4759 if ((ti.OwnerMask & ((uint)PermissionMask.Modify| (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) != ((uint)PermissionMask.Modify| (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
4760 break; 4760 break;
4761 4761
4762 if(ti.AssetID != requestID) 4762 if (ti.AssetID != requestID)
4763 break; 4763 break;
4764 } 4764 }
4765 else // Agent 4765 else // Agent
4766 { 4766 {
4767 CachedUserInfo userInfo = ((Scene)m_scene).CommsManager.UserProfileCacheService.GetUserDetails(AgentId); 4767 CachedUserInfo userInfo = ((Scene)m_scene).CommsManager.UserProfileCacheService.GetUserDetails(AgentId);
4768 if(userInfo == null) 4768 if (userInfo == null)
4769 break; 4769 break;
4770 4770
4771 if(userInfo.RootFolder == null) 4771 if (userInfo.RootFolder == null)
4772 break; 4772 break;
4773 4773
4774 InventoryItemBase assetRequestItem = userInfo.RootFolder.FindItem(itemID); 4774 InventoryItemBase assetRequestItem = userInfo.RootFolder.FindItem(itemID);
4775 if(assetRequestItem == null) 4775 if (assetRequestItem == null)
4776 { 4776 {
4777 assetRequestItem = ((Scene)m_scene).CommsManager.UserProfileCacheService.libraryRoot.FindItem(itemID); 4777 assetRequestItem = ((Scene)m_scene).CommsManager.UserProfileCacheService.libraryRoot.FindItem(itemID);
4778 if(assetRequestItem == null) 4778 if (assetRequestItem == null)
4779 return; 4779 return;
4780 } 4780 }
4781 4781
4782 if((assetRequestItem.CurrentPermissions & ((uint)PermissionMask.Modify| (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) != ((uint)PermissionMask.Modify| (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) 4782 if ((assetRequestItem.CurrentPermissions & ((uint)PermissionMask.Modify| (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) != ((uint)PermissionMask.Modify| (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
4783 break; 4783 break;
4784 if(assetRequestItem.AssetID != requestID) 4784 if (assetRequestItem.AssetID != requestID)
4785 break; 4785 break;
4786 } 4786 }
4787 } 4787 }
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
index c09da9b..11abf87 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
@@ -57,9 +57,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
57 void InPacket(Packet packet); 57 void InPacket(Packet packet);
58 void ProcessInPacket(Packet packet); 58 void ProcessInPacket(Packet packet);
59 void OutPacket(Packet NewPack, 59 void OutPacket(Packet NewPack,
60 ThrottleOutPacketType throttlePacketType); 60 ThrottleOutPacketType throttlePacketType);
61 void OutPacket(Packet NewPack, 61 void OutPacket(Packet NewPack,
62 ThrottleOutPacketType throttlePacketType, Object id); 62 ThrottleOutPacketType throttlePacketType, Object id);
63 LLPacketQueue PacketQueue { get; } 63 LLPacketQueue PacketQueue { get; }
64 void Stop(); 64 void Stop();
65 void Flush(); 65 void Flush();
@@ -136,7 +136,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
136 // time for a linear scan. 136 // time for a linear scan.
137 // 137 //
138 private Dictionary<uint, int> m_DupeTracker = 138 private Dictionary<uint, int> m_DupeTracker =
139 new Dictionary<uint, int>(); 139 new Dictionary<uint, int>();
140 private uint m_DupeTrackerWindow = 30; 140 private uint m_DupeTrackerWindow = 30;
141 141
142 // Values for the SimStatsReporter 142 // Values for the SimStatsReporter
@@ -207,14 +207,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
207 // notifier. 207 // notifier.
208 // 208 //
209 public void OutPacket( 209 public void OutPacket(
210 Packet packet, ThrottleOutPacketType throttlePacketType) 210 Packet packet, ThrottleOutPacketType throttlePacketType)
211 { 211 {
212 OutPacket(packet, throttlePacketType, null); 212 OutPacket(packet, throttlePacketType, null);
213 } 213 }
214 214
215 public void OutPacket( 215 public void OutPacket(
216 Packet packet, ThrottleOutPacketType throttlePacketType, 216 Packet packet, ThrottleOutPacketType throttlePacketType,
217 Object id) 217 Object id)
218 { 218 {
219 // Call the load balancer's hook. If this is not active here 219 // Call the load balancer's hook. If this is not active here
220 // we defer to the sim server this client is actually connected 220 // we defer to the sim server this client is actually connected
@@ -224,20 +224,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
224 if ((m_SynchronizeClient != null) && (!m_Client.IsActive)) 224 if ((m_SynchronizeClient != null) && (!m_Client.IsActive))
225 { 225 {
226 if (m_SynchronizeClient(m_Client.Scene, packet, 226 if (m_SynchronizeClient(m_Client.Scene, packet,
227 m_Client.AgentId, throttlePacketType)) 227 m_Client.AgentId, throttlePacketType))
228 return; 228 return;
229 } 229 }
230 230
231 packet.Header.Sequence = NextPacketSequenceNumber(); 231 packet.Header.Sequence = NextPacketSequenceNumber();
232 232
233 lock(m_NeedAck) 233 lock (m_NeedAck)
234 { 234 {
235 DropResend(id); 235 DropResend(id);
236 236
237 QueuePacket(packet, throttlePacketType, id); 237 QueuePacket(packet, throttlePacketType, id);
238 238
239 // We want to see that packet arrive if it's reliable 239 // We want to see that packet arrive if it's reliable
240 if(packet.Header.Reliable) 240 if (packet.Header.Reliable)
241 { 241 {
242 m_UnackedBytes += packet.ToBytes().Length; 242 m_UnackedBytes += packet.ToBytes().Length;
243 m_NeedAck[packet.Header.Sequence] = new AckData(packet, id); 243 m_NeedAck[packet.Header.Sequence] = new AckData(packet, id);
@@ -251,24 +251,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP
251 { 251 {
252 // Add acks to outgoing packets 252 // Add acks to outgoing packets
253 // 253 //
254 if(m_PendingAcks.Count > 0) 254 if (m_PendingAcks.Count > 0)
255 { 255 {
256 int count = m_PendingAcks.Count; 256 int count = m_PendingAcks.Count;
257 if(count > 10) 257 if (count > 10)
258 count = 10; 258 count = 10;
259 packet.Header.AckList = new uint[count]; 259 packet.Header.AckList = new uint[count];
260 260
261 int i = 0; 261 int i = 0;
262 262
263 foreach (uint ack in new List<uint>(m_PendingAcks.Keys)) 263 foreach (uint ack in new List<uint>(m_PendingAcks.Keys))
264 { 264 {
265 packet.Header.AckList[i] = ack; 265 packet.Header.AckList[i] = ack;
266 i++; 266 i++;
267 m_PendingAcks.Remove(ack); 267 m_PendingAcks.Remove(ack);
268 if (i >= 10) // That is how much space there is 268 if (i >= 10) // That is how much space there is
269 break; 269 break;
270 } 270 }
271 } 271 }
272 272
273 packet.TickCount = System.Environment.TickCount; 273 packet.TickCount = System.Environment.TickCount;
274 274
@@ -291,14 +291,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
291 // anything. There may not be a client there, don't clog up the 291 // anything. There may not be a client there, don't clog up the
292 // pipes. 292 // pipes.
293 // 293 //
294 if(lastAck == 0) 294 if (lastAck == 0)
295 return; 295 return;
296 296
297 lock (m_NeedAck) 297 lock (m_NeedAck)
298 { 298 {
299 // Nothing to do 299 // Nothing to do
300 // 300 //
301 if(m_NeedAck.Count == 0) 301 if (m_NeedAck.Count == 0)
302 return; 302 return;
303 303
304 // If we have seen no acks in <SilenceLimit> s but are 304 // If we have seen no acks in <SilenceLimit> s but are
@@ -307,7 +307,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
307 // then it will be dropped. 307 // then it will be dropped.
308 // 308 //
309 if ((((now - lastAck) > m_SilenceLimit) && 309 if ((((now - lastAck) > m_SilenceLimit) &&
310 m_NeedAck.Count > 0) || m_NeedAck.Count == 0) 310 m_NeedAck.Count > 0) || m_NeedAck.Count == 0)
311 { 311 {
312 return; 312 return;
313 } 313 }
@@ -336,7 +336,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
336 // 336 //
337 if ((now - packet.TickCount) > m_DiscardTimeout) 337 if ((now - packet.TickCount) > m_DiscardTimeout)
338 { 338 {
339 if(!m_ImportantPackets.Contains(packet.Type)) 339 if (!m_ImportantPackets.Contains(packet.Type))
340 m_NeedAck.Remove(packet.Header.Sequence); 340 m_NeedAck.Remove(packet.Header.Sequence);
341 341
342 TriggerOnPacketDrop(packet, data.Identifier); 342 TriggerOnPacketDrop(packet, data.Identifier);
@@ -364,8 +364,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
364 // the counter reaches 250. So there is a good chance another 364 // the counter reaches 250. So there is a good chance another
365 // packet with 250 blocks exists. 365 // packet with 250 blocks exists.
366 // 366 //
367 if(acks.Packets == null || 367 if (acks.Packets == null ||
368 acks.Packets.Length != m_PendingAcks.Count) 368 acks.Packets.Length != m_PendingAcks.Count)
369 acks.Packets = new PacketAckPacket.PacketsBlock[m_PendingAcks.Count]; 369 acks.Packets = new PacketAckPacket.PacketsBlock[m_PendingAcks.Count];
370 int i = 0; 370 int i = 0;
371 foreach (uint ack in new List<uint>(m_PendingAcks.Keys)) 371 foreach (uint ack in new List<uint>(m_PendingAcks.Keys))
@@ -389,11 +389,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
389 { 389 {
390 lock (m_PendingAcks) 390 lock (m_PendingAcks)
391 { 391 {
392 if(m_PendingAcks.Count < 250) 392 if (m_PendingAcks.Count < 250)
393 { 393 {
394 if(!m_PendingAcks.ContainsKey(packet.Header.Sequence)) 394 if (!m_PendingAcks.ContainsKey(packet.Header.Sequence))
395 m_PendingAcks.Add(packet.Header.Sequence, 395 m_PendingAcks.Add(packet.Header.Sequence,
396 packet.Header.Sequence); 396 packet.Header.Sequence);
397 return; 397 return;
398 } 398 }
399 } 399 }
@@ -405,11 +405,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
405 // If this is still full we have a truly exceptional 405 // If this is still full we have a truly exceptional
406 // condition (means, can't happen) 406 // condition (means, can't happen)
407 // 407 //
408 if(m_PendingAcks.Count < 250) 408 if (m_PendingAcks.Count < 250)
409 { 409 {
410 if(!m_PendingAcks.ContainsKey(packet.Header.Sequence)) 410 if (!m_PendingAcks.ContainsKey(packet.Header.Sequence))
411 m_PendingAcks.Add(packet.Header.Sequence, 411 m_PendingAcks.Add(packet.Header.Sequence,
412 packet.Header.Sequence); 412 packet.Header.Sequence);
413 return; 413 return;
414 } 414 }
415 } 415 }
@@ -433,9 +433,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
433 if (handlerPacketStats != null) 433 if (handlerPacketStats != null)
434 { 434 {
435 handlerPacketStats( 435 handlerPacketStats(
436 m_PacketsReceived - m_PacketsReceivedReported, 436 m_PacketsReceived - m_PacketsReceivedReported,
437 m_PacketsSent - m_PacketsSentReported, 437 m_PacketsSent - m_PacketsSentReported,
438 m_UnackedBytes); 438 m_UnackedBytes);
439 439
440 m_PacketsReceivedReported = m_PacketsReceived; 440 m_PacketsReceivedReported = m_PacketsReceived;
441 m_PacketsSentReported = m_PacketsSent; 441 m_PacketsSentReported = m_PacketsSent;
@@ -450,12 +450,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
450 lock (m_DupeTracker) 450 lock (m_DupeTracker)
451 { 451 {
452 Dictionary<uint, int> packs = 452 Dictionary<uint, int> packs =
453 new Dictionary<uint, int>(m_DupeTracker); 453 new Dictionary<uint, int>(m_DupeTracker);
454 454
455 foreach (uint pack in packs.Keys) 455 foreach (uint pack in packs.Keys)
456 { 456 {
457 if(Util.UnixTimeSinceEpoch() - m_DupeTracker[pack] > 457 if (Util.UnixTimeSinceEpoch() - m_DupeTracker[pack] >
458 m_DupeTrackerWindow) 458 m_DupeTrackerWindow)
459 m_DupeTracker.Remove(pack); 459 m_DupeTracker.Remove(pack);
460 } 460 }
461 } 461 }
@@ -463,13 +463,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
463 463
464 public void InPacket(Packet packet) 464 public void InPacket(Packet packet)
465 { 465 {
466 if(packet == null) 466 if (packet == null)
467 return; 467 return;
468 468
469 // If this client is on another partial instance, no need 469 // If this client is on another partial instance, no need
470 // to handle packets 470 // to handle packets
471 // 471 //
472 if(!m_Client.IsActive && packet.Type != PacketType.LogoutRequest) 472 if (!m_Client.IsActive && packet.Type != PacketType.LogoutRequest)
473 { 473 {
474 PacketPool.Instance.ReturnPacket(packet); 474 PacketPool.Instance.ReturnPacket(packet);
475 return; 475 return;
@@ -478,9 +478,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
478 // Any packet can have some packet acks in the header. 478 // Any packet can have some packet acks in the header.
479 // Process them here 479 // Process them here
480 // 480 //
481 if(packet.Header.AppendedAcks) 481 if (packet.Header.AppendedAcks)
482 { 482 {
483 foreach(uint id in packet.Header.AckList) 483 foreach (uint id in packet.Header.AckList)
484 { 484 {
485 ProcessAck(id); 485 ProcessAck(id);
486 } 486 }
@@ -489,12 +489,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
489 // When too many acks are needed to be sent, the client sends 489 // When too many acks are needed to be sent, the client sends
490 // a packet consisting of acks only 490 // a packet consisting of acks only
491 // 491 //
492 if(packet.Type == PacketType.PacketAck) 492 if (packet.Type == PacketType.PacketAck)
493 { 493 {
494 PacketAckPacket ackPacket = (PacketAckPacket)packet; 494 PacketAckPacket ackPacket = (PacketAckPacket)packet;
495 495
496 foreach (PacketAckPacket.PacketsBlock block in 496 foreach (PacketAckPacket.PacketsBlock block in
497 ackPacket.Packets) 497 ackPacket.Packets)
498 { 498 {
499 ProcessAck(block.ID); 499 ProcessAck(block.ID);
500 } 500 }
@@ -502,7 +502,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
502 PacketPool.Instance.ReturnPacket(packet); 502 PacketPool.Instance.ReturnPacket(packet);
503 return; 503 return;
504 } 504 }
505 else if(packet.Type == PacketType.StartPingCheck) 505 else if (packet.Type == PacketType.StartPingCheck)
506 { 506 {
507 StartPingCheckPacket startPing = (StartPingCheckPacket)packet; 507 StartPingCheckPacket startPing = (StartPingCheckPacket)packet;
508 CompletePingCheckPacket endPing = (CompletePingCheckPacket)PacketPool.Instance.GetPacket(PacketType.CompletePingCheck); 508 CompletePingCheckPacket endPing = (CompletePingCheckPacket)PacketPool.Instance.GetPacket(PacketType.CompletePingCheck);
@@ -537,7 +537,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
537 return; 537 return;
538 538
539 m_DupeTracker.Add(packet.Header.Sequence, 539 m_DupeTracker.Add(packet.Header.Sequence,
540 Util.UnixTimeSinceEpoch()); 540 Util.UnixTimeSinceEpoch());
541 } 541 }
542 542
543 m_Client.ProcessInPacket(packet); 543 m_Client.ProcessInPacket(packet);
@@ -560,9 +560,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
560 AckData data; 560 AckData data;
561 Packet packet; 561 Packet packet;
562 562
563 lock(m_NeedAck) 563 lock (m_NeedAck)
564 { 564 {
565 if(!m_NeedAck.TryGetValue(id, out data)) 565 if (!m_NeedAck.TryGetValue(id, out data))
566 return; 566 return;
567 567
568 packet = data.Packet; 568 packet = data.Packet;
@@ -650,7 +650,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
650 650
651 public void AddImportantPacket(PacketType type) 651 public void AddImportantPacket(PacketType type)
652 { 652 {
653 if(m_ImportantPackets.Contains(type)) 653 if (m_ImportantPackets.Contains(type))
654 return; 654 return;
655 655
656 m_ImportantPackets.Add(type); 656 m_ImportantPackets.Add(type);
@@ -658,7 +658,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
658 658
659 public void RemoveImportantPacket(PacketType type) 659 public void RemoveImportantPacket(PacketType type)
660 { 660 {
661 if(!m_ImportantPackets.Contains(type)) 661 if (!m_ImportantPackets.Contains(type))
662 return; 662 return;
663 663
664 m_ImportantPackets.Remove(type); 664 m_ImportantPackets.Remove(type);
@@ -668,7 +668,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
668 { 668 {
669 foreach (AckData data in new List<AckData>(m_NeedAck.Values)) 669 foreach (AckData data in new List<AckData>(m_NeedAck.Values))
670 { 670 {
671 if(data.Identifier != null && data.Identifier == id) 671 if (data.Identifier != null && data.Identifier == id)
672 { 672 {
673 m_NeedAck.Remove(data.Packet.Header.Sequence); 673 m_NeedAck.Remove(data.Packet.Header.Sequence);
674 return; 674 return;
@@ -680,7 +680,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
680 { 680 {
681 PacketDrop handlerPacketDrop = OnPacketDrop; 681 PacketDrop handlerPacketDrop = OnPacketDrop;
682 682
683 if(handlerPacketDrop == null) 683 if (handlerPacketDrop == null)
684 return; 684 return;
685 685
686 handlerPacketDrop(packet, id); 686 handlerPacketDrop(packet, id);
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
index 96f8ac6..aed9465 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
@@ -338,7 +338,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
338 if (TaskThrottle.UnderLimit() && (TaskOutgoingPacketQueue.Count > 0 || TaskLowpriorityPacketQueue.Count > 0)) 338 if (TaskThrottle.UnderLimit() && (TaskOutgoingPacketQueue.Count > 0 || TaskLowpriorityPacketQueue.Count > 0))
339 { 339 {
340 LLQueItem qpack; 340 LLQueItem qpack;
341 if(TaskOutgoingPacketQueue.Count > 0) 341 if (TaskOutgoingPacketQueue.Count > 0)
342 { 342 {
343 qpack = TaskOutgoingPacketQueue.Dequeue(); 343 qpack = TaskOutgoingPacketQueue.Dequeue();
344 SendQueue.PriorityEnqueue(qpack); 344 SendQueue.PriorityEnqueue(qpack);
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index 321c2ff..28f5a32 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -380,8 +380,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
380 //Slave regions don't accept new clients 380 //Slave regions don't accept new clients
381 if (m_localScene.Region_Status != RegionStatus.SlaveScene) 381 if (m_localScene.Region_Status != RegionStatus.SlaveScene)
382 { 382 {
383 if (!(packet is UseCircuitCodePacket)) 383 if (!(packet is UseCircuitCodePacket))
384 return; 384 return;
385 UseCircuitCodePacket useCircuit = (UseCircuitCodePacket) packet; 385 UseCircuitCodePacket useCircuit = (UseCircuitCodePacket) packet;
386 lock (clientCircuits) 386 lock (clientCircuits)
387 { 387 {