aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2010-08-23 23:16:48 +0100
committerJustin Clark-Casey (justincc)2010-08-23 23:16:48 +0100
commit704a53fb9bfeb945fa25f7367c631698dea5ae89 (patch)
tree532e4df3b07791e26f96d67be3f32614d9af052b /OpenSim/Region
parentRemove various warnings and improve logging messages. No functional changes. (diff)
downloadopensim-SC-704a53fb9bfeb945fa25f7367c631698dea5ae89.zip
opensim-SC-704a53fb9bfeb945fa25f7367c631698dea5ae89.tar.gz
opensim-SC-704a53fb9bfeb945fa25f7367c631698dea5ae89.tar.bz2
opensim-SC-704a53fb9bfeb945fa25f7367c631698dea5ae89.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 ada26cc..34205e3 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
@@ -294,9 +294,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
294 return m_RemoteConnector.GetAssetPermissions(userID, assetID); 294 return m_RemoteConnector.GetAssetPermissions(userID, assetID);
295 } 295 }
296 296
297
298 #endregion 297 #endregion
299
300
301 } 298 }
302} 299} \ 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 b6eddb1..dc43e45 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -3844,18 +3844,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3844 if (World.GetScenePresence(destId) != null) 3844 if (World.GetScenePresence(destId) != null)
3845 { 3845 {
3846 // destination is an avatar 3846 // destination is an avatar
3847 InventoryItemBase agentItem = 3847 InventoryItemBase agentItem = World.MoveTaskInventoryItem(destId, UUID.Zero, m_host, objId);
3848 World.MoveTaskInventoryItem(destId, UUID.Zero, m_host, objId);
3849 3848
3850 if (agentItem == null) 3849 if (agentItem == null)
3851 return; 3850 return;
3852 3851
3853 byte[] bucket = new byte[17]; 3852 byte[] bucket = new byte[17];
3854 bucket[0] = (byte)assetType; 3853 bucket[0] = (byte)assetType;
3855 byte[] objBytes = objId.GetBytes(); 3854 byte[] objBytes = agentItem.ID.GetBytes();
3856 Array.Copy(objBytes, 0, bucket, 1, 16); 3855 Array.Copy(objBytes, 0, bucket, 1, 16);
3857 3856
3858 Console.WriteLine("Giving inventory");
3859 GridInstantMessage msg = new GridInstantMessage(World, 3857 GridInstantMessage msg = new GridInstantMessage(World,
3860 m_host.UUID, m_host.Name+", an object owned by "+ 3858 m_host.UUID, m_host.Name+", an object owned by "+
3861 resolveName(m_host.OwnerID)+",", destId, 3859 resolveName(m_host.OwnerID)+",", destId,