aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs9
1 files changed, 8 insertions, 1 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
index 83e77b7..4964efc 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
@@ -370,6 +370,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
370 { 370 {
371 m_NeedAck.Remove(packet.Header.Sequence); 371 m_NeedAck.Remove(packet.Header.Sequence);
372 TriggerOnPacketDrop(packet, data.Identifier); 372 TriggerOnPacketDrop(packet, data.Identifier);
373 PacketPool.Instance.ReturnPacket(packet);
373 continue; 374 continue;
374 } 375 }
375 376
@@ -625,6 +626,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
625 return; 626 return;
626 627
627 m_NeedAck.Remove(id); 628 m_NeedAck.Remove(id);
629 PacketPool.Instance.ReturnPacket(data.Packet);
628 m_UnackedBytes -= data.Length; 630 m_UnackedBytes -= data.Length;
629 } 631 }
630 } 632 }
@@ -735,6 +737,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
735 if (data.Identifier != null && data.Identifier == id) 737 if (data.Identifier != null && data.Identifier == id)
736 { 738 {
737 m_NeedAck.Remove(data.Packet.Header.Sequence); 739 m_NeedAck.Remove(data.Packet.Header.Sequence);
740 PacketPool.Instance.ReturnPacket(data.Packet);
738 return; 741 return;
739 } 742 }
740 } 743 }
@@ -804,7 +807,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
804 sendbuffer.Length, SocketFlags.None, m_Client.CircuitCode); 807 sendbuffer.Length, SocketFlags.None, m_Client.CircuitCode);
805 } 808 }
806 809
807 PacketPool.Instance.ReturnPacket(packet); 810 // If this is a reliable packet, we are still holding a ref
811 // Dont't return in that case
812 //
813 if (!packet.Header.Reliable)
814 PacketPool.Instance.ReturnPacket(packet);
808 } 815 }
809 816
810 private void Abort() 817 private void Abort()