diff options
author | Melanie Thielker | 2008-08-10 16:37:45 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-08-10 16:37:45 +0000 |
commit | 9b7e66ceda0d7fb17af5b29f3b2be4567f1c2211 (patch) | |
tree | c9d991db159ea57bd1ed0162300690de8219a785 | |
parent | Patch #9024 (diff) | |
download | opensim-SC-9b7e66ceda0d7fb17af5b29f3b2be4567f1c2211.zip opensim-SC-9b7e66ceda0d7fb17af5b29f3b2be4567f1c2211.tar.gz opensim-SC-9b7e66ceda0d7fb17af5b29f3b2be4567f1c2211.tar.bz2 opensim-SC-9b7e66ceda0d7fb17af5b29f3b2be4567f1c2211.tar.xz |
Attempt to address Mantis #1905, #1909
Prevent re-sequencing of resent packets. Thanks, ckrinke, for
catching that, it is what was happening.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs index aaa8113..f764405 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs | |||
@@ -240,6 +240,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
240 | return; | 240 | return; |
241 | } | 241 | } |
242 | 242 | ||
243 | packet.Header.Sequence = 0; | ||
244 | |||
243 | lock (m_NeedAck) | 245 | lock (m_NeedAck) |
244 | { | 246 | { |
245 | DropResend(id); | 247 | DropResend(id); |
@@ -724,18 +726,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
724 | packet.TickCount = System.Environment.TickCount; | 726 | packet.TickCount = System.Environment.TickCount; |
725 | 727 | ||
726 | // Assign sequence number here to prevent out of order packets | 728 | // Assign sequence number here to prevent out of order packets |
727 | packet.Header.Sequence = NextPacketSequenceNumber(); | 729 | if(packet.Header.Sequence == 0) |
728 | 730 | { | |
729 | lock (m_NeedAck) | 731 | packet.Header.Sequence = NextPacketSequenceNumber(); |
730 | { | 732 | |
731 | // We want to see that packet arrive if it's reliable | 733 | lock (m_NeedAck) |
732 | if (packet.Header.Reliable) | 734 | { |
733 | { | 735 | // We want to see that packet arrive if it's reliable |
734 | m_UnackedBytes += packet.ToBytes().Length; | 736 | if (packet.Header.Reliable) |
735 | m_NeedAck[packet.Header.Sequence] = new AckData(packet, | 737 | { |
736 | item.Identifier); | 738 | m_UnackedBytes += packet.ToBytes().Length; |
737 | } | 739 | m_NeedAck[packet.Header.Sequence] = new AckData(packet, |
738 | } | 740 | item.Identifier); |
741 | } | ||
742 | } | ||
743 | } | ||
739 | 744 | ||
740 | // Actually make the byte array and send it | 745 | // Actually make the byte array and send it |
741 | try | 746 | try |