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/LLPacketHandler.cs16
1 files changed, 11 insertions, 5 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
index a1a8e00..7e3d919 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
@@ -741,16 +741,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
741 741
742 private void DropResend(Object id) 742 private void DropResend(Object id)
743 { 743 {
744 foreach (LLQueItem data in new List<LLQueItem>(m_NeedAck.Values)) 744 LLQueItem d = null;
745
746 foreach (LLQueItem data in m_NeedAck.Values)
745 { 747 {
746 if (data.Identifier != null && data.Identifier == id) 748 if (data.Identifier != null && data.Identifier == id)
747 { 749 {
748 m_NeedAck.Remove(data.Packet.Header.Sequence); 750 d = data;
749 m_PacketQueue.Cancel(data.Sequence); 751 break;
750 PacketPool.Instance.ReturnPacket(data.Packet);
751 return;
752 } 752 }
753 } 753 }
754
755 if (null == d) return;
756
757 m_NeedAck.Remove(d.Packet.Header.Sequence);
758 m_PacketQueue.Cancel(d.Sequence);
759 PacketPool.Instance.ReturnPacket(d.Packet);
754 } 760 }
755 761
756 private void TriggerOnPacketDrop(Packet packet, Object id) 762 private void TriggerOnPacketDrop(Packet packet, Object id)