* 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 described0.6.0-stable
parent
3e124a3dba
commit
8ab50fe3ee
OpenSim/Region
ClientStack/LindenUDP
Environment/Scenes
|
@ -1545,6 +1545,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
OutPacket(pc, ThrottleOutPacketType.Unknown);
|
OutPacket(pc, ThrottleOutPacketType.Unknown);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Tell the client that an object has been deleted
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="regionHandle"></param>
|
||||||
|
/// <param name="localID"></param>
|
||||||
public void SendKiPrimitive(ulong regionHandle, uint localID)
|
public void SendKiPrimitive(ulong regionHandle, uint localID)
|
||||||
{
|
{
|
||||||
KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject);
|
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 = new KillObjectPacket.ObjectDataBlock[1];
|
||||||
kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock();
|
kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock();
|
||||||
kill.ObjectData[0].ID = localID;
|
kill.ObjectData[0].ID = localID;
|
||||||
kill.Header.Reliable = false;
|
kill.Header.Reliable = true;
|
||||||
kill.Header.Zerocoded = true;
|
kill.Header.Zerocoded = true;
|
||||||
OutPacket(kill, ThrottleOutPacketType.Task);
|
OutPacket(kill, ThrottleOutPacketType.Task);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1651,6 +1651,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
item.AssetType = asset.Type;
|
item.AssetType = asset.Type;
|
||||||
item.InvType = (int)InventoryType.Object;
|
item.InvType = (int)InventoryType.Object;
|
||||||
item.Folder = folderID;
|
item.Folder = folderID;
|
||||||
|
|
||||||
if ((remoteClient.AgentId != objectGroup.RootPart.OwnerID) && ExternalChecks.ExternalChecksPropagatePermissions())
|
if ((remoteClient.AgentId != objectGroup.RootPart.OwnerID) && ExternalChecks.ExternalChecksPropagatePermissions())
|
||||||
{
|
{
|
||||||
uint perms=objectGroup.GetEffectivePermissions();
|
uint perms=objectGroup.GetEffectivePermissions();
|
||||||
|
|
Loading…
Reference in New Issue