From 9b7e66ceda0d7fb17af5b29f3b2be4567f1c2211 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Sun, 10 Aug 2008 16:37:45 +0000
Subject: Attempt to address Mantis #1905, #1909 Prevent re-sequencing of
 resent packets. Thanks, ckrinke, for catching that, it is what was happening.

---
 .../ClientStack/LindenUDP/LLPacketHandler.cs       | 29 +++++++++++++---------
 1 file 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
                     return;
             }
 
+			packet.Header.Sequence = 0;
+
             lock (m_NeedAck)
             {
                 DropResend(id);
@@ -724,18 +726,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP
             packet.TickCount = System.Environment.TickCount;
 
             // Assign sequence number here to prevent out of order packets
-            packet.Header.Sequence = NextPacketSequenceNumber();
-
-            lock (m_NeedAck)
-            {
-                // We want to see that packet arrive if it's reliable
-                if (packet.Header.Reliable)
-                {
-                    m_UnackedBytes += packet.ToBytes().Length;
-                    m_NeedAck[packet.Header.Sequence] = new AckData(packet, 
-                            item.Identifier);
-                }
-            }
+			if(packet.Header.Sequence == 0)
+			{
+				packet.Header.Sequence = NextPacketSequenceNumber();
+
+				lock (m_NeedAck)
+				{
+					// We want to see that packet arrive if it's reliable
+					if (packet.Header.Reliable)
+					{
+						m_UnackedBytes += packet.ToBytes().Length;
+						m_NeedAck[packet.Header.Sequence] = new AckData(packet, 
+								item.Identifier);
+					}
+				}
+			}
 
             // Actually make the byte array and send it
             try
-- 
cgit v1.1