From 52afd8588d07cc063e4a7e0fe9ace129de1e7a7a Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 19 Aug 2016 17:49:59 +0100 Subject: [PATCH] fix updates resend by reEnqueing, that got broken down the line --- .../ClientStack/Linden/UDP/LLClientView.cs | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index f580e5a641..78043bdfe4 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -4221,26 +4221,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (!canUseImproved && !canUseCompressed) { + ObjectUpdatePacket.ObjectDataBlock ablock; if (update.Entity is ScenePresence) - { - ObjectUpdatePacket.ObjectDataBlock ablock = - CreateAvatarUpdateBlock((ScenePresence)update.Entity); - objectUpdateBlocks.Value.Add(ablock); - maxUpdatesBytes -= ablock.Length; - } + ablock = CreateAvatarUpdateBlock((ScenePresence)update.Entity); else - { - ObjectUpdatePacket.ObjectDataBlock ablock = - CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId); - objectUpdateBlocks.Value.Add(ablock); - maxUpdatesBytes -= ablock.Length; - } + ablock = CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId); + objectUpdateBlocks.Value.Add(ablock); + objectUpdates.Value.Add(update); + maxUpdatesBytes -= ablock.Length; + } else if (!canUseImproved) { ObjectUpdateCompressedPacket.ObjectDataBlock ablock = CreateCompressedUpdateBlock((SceneObjectPart)update.Entity, updateFlags); compressedUpdateBlocks.Value.Add(ablock); + compressedUpdates.Value.Add(update); maxUpdatesBytes -= ablock.Length; } else @@ -4251,6 +4247,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP ImprovedTerseObjectUpdatePacket.ObjectDataBlock ablock = CreateImprovedTerseBlock(update.Entity, updateFlags.HasFlag(PrimUpdateFlags.Textures)); terseAgentUpdateBlocks.Value.Add(ablock); + terseAgentUpdates.Value.Add(update); maxUpdatesBytes -= ablock.Length; } else @@ -4259,6 +4256,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP ImprovedTerseObjectUpdatePacket.ObjectDataBlock ablock = CreateImprovedTerseBlock(update.Entity, updateFlags.HasFlag(PrimUpdateFlags.Textures)); terseUpdateBlocks.Value.Add(ablock); + terseUpdates.Value.Add(update); maxUpdatesBytes -= ablock.Length; } } @@ -4290,7 +4288,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP for (int i = 0; i < blocks.Count; i++) packet.ObjectData[i] = blocks[i]; - OutPacket(packet, ThrottleOutPacketType.Unknown, true, delegate(OutgoingPacket oPacket) { ResendPrimUpdates(terseUpdates.Value, oPacket); }); + OutPacket(packet, ThrottleOutPacketType.Unknown, true, delegate(OutgoingPacket oPacket) { ResendPrimUpdates(terseAgentUpdates.Value, oPacket); }); } if (objectUpdateBlocks.IsValueCreated) @@ -4305,7 +4303,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP for (int i = 0; i < blocks.Count; i++) packet.ObjectData[i] = blocks[i]; - OutPacket(packet, ThrottleOutPacketType.Task, true); + OutPacket(packet, ThrottleOutPacketType.Task, true, delegate(OutgoingPacket oPacket) { ResendPrimUpdates(objectUpdates.Value, oPacket); }); } if (compressedUpdateBlocks.IsValueCreated) @@ -4320,7 +4318,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP for (int i = 0; i < blocks.Count; i++) packet.ObjectData[i] = blocks[i]; - OutPacket(packet, ThrottleOutPacketType.Task, true); + OutPacket(packet, ThrottleOutPacketType.Task, true, delegate(OutgoingPacket oPacket) { ResendPrimUpdates(compressedUpdates.Value, oPacket); }); } if (terseUpdateBlocks.IsValueCreated)