aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.Inventory.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs18
1 files changed, 12 insertions, 6 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index 12095e5..590bea0 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -1179,7 +1179,8 @@ namespace OpenSim.Region.Environment.Scenes
1179 destTaskItem.InvType = srcTaskItem.InvType; 1179 destTaskItem.InvType = srcTaskItem.InvType;
1180 destTaskItem.Type = srcTaskItem.Type; 1180 destTaskItem.Type = srcTaskItem.Type;
1181 1181
1182 destPart.AddInventoryItem(destTaskItem); 1182 destPart.AddInventoryItem(destTaskItem, part.OwnerID!=destPart.OwnerID
1183 && ExternalChecks.ExternalChecksPropagatePermissions());
1183 1184
1184 if ((srcTaskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) 1185 if ((srcTaskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
1185 part.RemoveInventoryItem(itemId); 1186 part.RemoveInventoryItem(itemId);
@@ -1249,10 +1250,15 @@ namespace OpenSim.Region.Environment.Scenes
1249 1250
1250 if (part != null) 1251 if (part != null)
1251 { 1252 {
1252 if (!ExternalChecks.ExternalChecksCanEditObjectInventory(part.UUID, remoteClient.AgentId))
1253 return;
1254
1255 TaskInventoryItem currentItem = part.GetInventoryItem(itemID); 1253 TaskInventoryItem currentItem = part.GetInventoryItem(itemID);
1254 bool allowInventoryDrop = (part.GetEffectiveObjectFlags()
1255 & (uint)PrimFlags.AllowInventoryDrop) != 0;
1256 // Explicity allow anyone to add to the inventory if the AllowInventoryDrop
1257 // flag has been set. Don't however let them update an item unless
1258 // they pass the external checks
1259 if (!ExternalChecks.ExternalChecksCanEditObjectInventory(part.UUID, remoteClient.AgentId)
1260 && (currentItem != null || !allowInventoryDrop ))
1261 return;
1256 1262
1257 if (currentItem == null) 1263 if (currentItem == null)
1258 { 1264 {
@@ -1417,7 +1423,7 @@ namespace OpenSim.Region.Environment.Scenes
1417 taskItem.PermsMask = 0; 1423 taskItem.PermsMask = 0;
1418 taskItem.AssetID = asset.FullID; 1424 taskItem.AssetID = asset.FullID;
1419 1425
1420 part.AddInventoryItem(taskItem); 1426 part.AddInventoryItem(taskItem, false);
1421 part.GetProperties(remoteClient); 1427 part.GetProperties(remoteClient);
1422 1428
1423 part.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0); 1429 part.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0);
@@ -1512,7 +1518,7 @@ namespace OpenSim.Region.Environment.Scenes
1512 destTaskItem.InvType = srcTaskItem.InvType; 1518 destTaskItem.InvType = srcTaskItem.InvType;
1513 destTaskItem.Type = srcTaskItem.Type; 1519 destTaskItem.Type = srcTaskItem.Type;
1514 1520
1515 destPart.AddInventoryItemExclusive(destTaskItem); 1521 destPart.AddInventoryItemExclusive(destTaskItem, false);
1516 1522
1517 if (running > 0) 1523 if (running > 0)
1518 { 1524 {