aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2010-08-23 23:16:48 +0100
committerDiva Canto2010-08-24 17:22:08 -0700
commit269c9a11b7253413c0dc139b6ca0b76bd1c65b12 (patch)
tree28ef052c92d9b5b9981ffde09e302b51f81d2d84 /OpenSim/Region
parentRemove various warnings and improve logging messages. No functional changes. (diff)
downloadopensim-SC_OLD-269c9a11b7253413c0dc139b6ca0b76bd1c65b12.zip
opensim-SC_OLD-269c9a11b7253413c0dc139b6ca0b76bd1c65b12.tar.gz
opensim-SC_OLD-269c9a11b7253413c0dc139b6ca0b76bd1c65b12.tar.bz2
opensim-SC_OLD-269c9a11b7253413c0dc139b6ca0b76bd1c65b12.tar.xz
Fix bug in llGiveInventory() where items were disappearing on relog
This was a regression - the code to look up the correct type folder was no longer being called if items were added without a parent folder set This may have been broken since commit bd49985a on 2010-05-02
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs22
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs5
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs6
3 files changed, 20 insertions, 13 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
index 3de6e5c..350ad66 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
@@ -216,16 +216,28 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
216 return m_InventoryService.PurgeFolder(folder); 216 return m_InventoryService.PurgeFolder(folder);
217 } 217 }
218 218
219 /// <summary>
220 /// Add a new item to the user's inventory
221 /// </summary>
222 /// <param name="item"></param>
223 /// <returns>true if the item was successfully added</returns>
224 public bool AddItem(InventoryItemBase item) 219 public bool AddItem(InventoryItemBase item)
225 { 220 {
226 m_log.DebugFormat( 221 m_log.DebugFormat(
227 "[LOCAL INVENTORY SERVICES CONNECTOR]: Adding inventory item {0} to user {1} folder {2}", 222 "[LOCAL INVENTORY SERVICES CONNECTOR]: Adding inventory item {0} to user {1} folder {2}",
228 item.Name, item.Owner, item.Folder); 223 item.Name, item.Owner, item.Folder);
224
225 if (UUID.Zero == item.Folder)
226 {
227 InventoryFolderBase f = m_InventoryService.GetFolderForType(item.Owner, (AssetType)item.AssetType);
228 if (f != null)
229 {
230 item.Folder = f.ID;
231 }
232 else
233 {
234 f = m_InventoryService.GetRootFolder(item.Owner);
235 if (f != null)
236 item.Folder = f.ID;
237 else
238 return false;
239 }
240 }
229 241
230 return m_InventoryService.AddItem(item); 242 return m_InventoryService.AddItem(item);
231 } 243 }
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
index 277060d..62ed7be 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
@@ -295,9 +295,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
295 return m_RemoteConnector.GetAssetPermissions(userID, assetID); 295 return m_RemoteConnector.GetAssetPermissions(userID, assetID);
296 } 296 }
297 297
298
299 #endregion 298 #endregion
300
301
302 } 299 }
303} 300} \ No newline at end of file
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index f767c64..9451005 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -3837,18 +3837,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3837 if (World.GetScenePresence(destId) != null) 3837 if (World.GetScenePresence(destId) != null)
3838 { 3838 {
3839 // destination is an avatar 3839 // destination is an avatar
3840 InventoryItemBase agentItem = 3840 InventoryItemBase agentItem = World.MoveTaskInventoryItem(destId, UUID.Zero, m_host, objId);
3841 World.MoveTaskInventoryItem(destId, UUID.Zero, m_host, objId);
3842 3841
3843 if (agentItem == null) 3842 if (agentItem == null)
3844 return; 3843 return;
3845 3844
3846 byte[] bucket = new byte[17]; 3845 byte[] bucket = new byte[17];
3847 bucket[0] = (byte)assetType; 3846 bucket[0] = (byte)assetType;
3848 byte[] objBytes = objId.GetBytes(); 3847 byte[] objBytes = agentItem.ID.GetBytes();
3849 Array.Copy(objBytes, 0, bucket, 1, 16); 3848 Array.Copy(objBytes, 0, bucket, 1, 16);
3850 3849
3851 Console.WriteLine("Giving inventory");
3852 GridInstantMessage msg = new GridInstantMessage(World, 3850 GridInstantMessage msg = new GridInstantMessage(World,
3853 m_host.UUID, m_host.Name+", an object owned by "+ 3851 m_host.UUID, m_host.Name+", an object owned by "+
3854 resolveName(m_host.OwnerID)+",", destId, 3852 resolveName(m_host.OwnerID)+",", destId,