aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-02-10 19:58:34 +0000
committerJustin Clark-Casey (justincc)2012-02-10 19:58:34 +0000
commit44d84bc2779165e75224975e83ca4539a00e9d24 (patch)
tree731a172f1d8a8065281363f54fadb5ea09efa27d
parentFix: Unable to remove AV from friend list (sqldb-bug) http://opensimulator.or... (diff)
downloadopensim-SC-44d84bc2779165e75224975e83ca4539a00e9d24.zip
opensim-SC-44d84bc2779165e75224975e83ca4539a00e9d24.tar.gz
opensim-SC-44d84bc2779165e75224975e83ca4539a00e9d24.tar.bz2
opensim-SC-44d84bc2779165e75224975e83ca4539a00e9d24.tar.xz
Fix bug where somebody taking a copy of an object they didn't own that was rezzed before the region was restarted would wrongly place the copy in the object owner's inventory.
Addresses http://opensimulator.org/mantis/view.php?id=5825
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs12
-rw-r--r--OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs3
2 files changed, 12 insertions, 3 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 8b5b1a7..63ba3d3 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -546,12 +546,20 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
546 return null; 546 return null;
547 547
548 userID = remoteClient.AgentId; 548 userID = remoteClient.AgentId;
549
550// m_log.DebugFormat(
551// "[INVENTORY ACCESS MODULE]: Target of {0} in CreateItemForObject() is {1} {2}",
552// action, remoteClient.Name, userID);
549 } 553 }
550 else 554 else
551 { 555 {
552 // All returns / deletes go to the object owner 556 // All returns / deletes go to the object owner
553 // 557 //
554 userID = so.RootPart.OwnerID; 558 userID = so.RootPart.OwnerID;
559
560// m_log.DebugFormat(
561// "[INVENTORY ACCESS MODULE]: Target of {0} in CreateItemForObject() is object owner {1}",
562// action, userID);
555 } 563 }
556 564
557 if (userID == UUID.Zero) // Can't proceed 565 if (userID == UUID.Zero) // Can't proceed
@@ -637,11 +645,11 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
637 } 645 }
638 646
639 // Override and put into where it came from, if it came 647 // Override and put into where it came from, if it came
640 // from anywhere in inventory 648 // from anywhere in inventory and the owner is taking it back.
641 // 649 //
642 if (action == DeRezAction.Take || action == DeRezAction.TakeCopy) 650 if (action == DeRezAction.Take || action == DeRezAction.TakeCopy)
643 { 651 {
644 if (so.RootPart.FromFolderID != UUID.Zero) 652 if (so.RootPart.FromFolderID != UUID.Zero && userID == remoteClient.AgentId)
645 { 653 {
646 InventoryFolderBase f = new InventoryFolderBase(so.RootPart.FromFolderID, userID); 654 InventoryFolderBase f = new InventoryFolderBase(so.RootPart.FromFolderID, userID);
647 folder = m_Scene.InventoryService.GetFolder(f); 655 folder = m_Scene.InventoryService.GetFolder(f);
diff --git a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs
index 5dfd3e0..f678d07 100644
--- a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs
+++ b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs
@@ -148,7 +148,8 @@ namespace OpenSim.Region.Framework.Scenes
148 x = m_inventoryDeletes.Dequeue(); 148 x = m_inventoryDeletes.Dequeue();
149 149
150 m_log.DebugFormat( 150 m_log.DebugFormat(
151 "[ASYNC DELETER]: Sending object to user's inventory, action {1}, count {2}, {0} item(s) remaining.", left, x.action, x.objectGroups.Count); 151 "[ASYNC DELETER]: Sending object to user's inventory, action {1}, count {2}, {0} item(s) remaining.",
152 left, x.action, x.objectGroups.Count);
152 153
153 try 154 try
154 { 155 {