From 8ab50fe3ee4f30e10f3b199b53f6d1120ea7eb5a Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Tue, 14 Oct 2008 14:27:00 +0000 Subject: [PATCH] * Make KillObjectPackets reliable * This may help http://opensimulator.org/mantis/view.php?id=2377 where large linksets do not always correctly delete - since a lost kill packet to the client could result in the symptoms described --- OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 7 ++++++- OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index ed4ac60ac3..23c6df47e3 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -1545,6 +1545,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(pc, ThrottleOutPacketType.Unknown); } + /// + /// Tell the client that an object has been deleted + /// + /// + /// public void SendKiPrimitive(ulong regionHandle, uint localID) { KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject); @@ -1552,7 +1557,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); kill.ObjectData[0].ID = localID; - kill.Header.Reliable = false; + kill.Header.Reliable = true; kill.Header.Zerocoded = true; OutPacket(kill, ThrottleOutPacketType.Task); } diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 3414b26c89..55cc60a1ea 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -1651,6 +1651,7 @@ namespace OpenSim.Region.Environment.Scenes item.AssetType = asset.Type; item.InvType = (int)InventoryType.Object; item.Folder = folderID; + if ((remoteClient.AgentId != objectGroup.RootPart.OwnerID) && ExternalChecks.ExternalChecksPropagatePermissions()) { uint perms=objectGroup.GetEffectivePermissions();