diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.Inventory.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | 18 |
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 | { |