Stop packets that may be resent from being returned to the packet pool.

FWIW
This commit is contained in:
Melanie Thielker
2008-12-17 20:21:48 +00:00
parent 2108d328df
commit 5320f0f33c

View File

@@ -370,6 +370,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
m_NeedAck.Remove(packet.Header.Sequence);
TriggerOnPacketDrop(packet, data.Identifier);
PacketPool.Instance.ReturnPacket(packet);
continue;
}
@@ -625,6 +626,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return;
m_NeedAck.Remove(id);
PacketPool.Instance.ReturnPacket(data.Packet);
m_UnackedBytes -= data.Length;
}
}
@@ -735,6 +737,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (data.Identifier != null && data.Identifier == id)
{
m_NeedAck.Remove(data.Packet.Header.Sequence);
PacketPool.Instance.ReturnPacket(data.Packet);
return;
}
}
@@ -804,7 +807,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
sendbuffer.Length, SocketFlags.None, m_Client.CircuitCode);
}
PacketPool.Instance.ReturnPacket(packet);
// If this is a reliable packet, we are still holding a ref
// Dont't return in that case
//
if (!packet.Header.Reliable)
PacketPool.Instance.ReturnPacket(packet);
}
private void Abort()