diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
index 84e42a37d1..6f7c4da20b 100644
--- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
+++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
@@ -35,6 +35,8 @@ using log4net;
namespace OpenSim.Framework.Communications.Cache
{
+ internal delegate void AddItemDelegate(InventoryItemBase itemInfo);
+ internal delegate void UpdateItemDelegate(InventoryItemBase itemInfo);
internal delegate void DeleteItemDelegate(LLUUID itemID);
internal delegate void CreateFolderDelegate(string folderName, LLUUID folderID, ushort folderType, LLUUID parentID);
@@ -532,13 +534,20 @@ namespace OpenSim.Framework.Communications.Cache
/// Add an item to the user's inventory
///
///
- public void AddItem(InventoryItemBase itemInfo)
+ public void AddItem(InventoryItemBase item)
{
if (HasInventory)
{
- ItemReceive(itemInfo);
- m_commsManager.InventoryService.AddItem(itemInfo);
+ ItemReceive(item);
+ m_commsManager.InventoryService.AddItem(item);
}
+ else
+ {
+ AddRequest(
+ new InventoryRequest(
+ Delegate.CreateDelegate(typeof(AddItemDelegate), this, "AddItem"),
+ new object[] { item }));
+ }
}
///
@@ -546,12 +555,19 @@ namespace OpenSim.Framework.Communications.Cache
///
///
///
- public void UpdateItem(InventoryItemBase itemInfo)
+ public void UpdateItem(InventoryItemBase item)
{
if (HasInventory)
{
- m_commsManager.InventoryService.UpdateItem(itemInfo);
+ m_commsManager.InventoryService.UpdateItem(item);
}
+ else
+ {
+ AddRequest(
+ new InventoryRequest(
+ Delegate.CreateDelegate(typeof(UpdateItemDelegate), this, "UpdateItem"),
+ new object[] { item }));
+ }
}
///
diff --git a/OpenSim/Grid/InventoryServer/GridInventoryService.cs b/OpenSim/Grid/InventoryServer/GridInventoryService.cs
index 5c1902fa57..4864185dde 100644
--- a/OpenSim/Grid/InventoryServer/GridInventoryService.cs
+++ b/OpenSim/Grid/InventoryServer/GridInventoryService.cs
@@ -62,7 +62,7 @@ namespace OpenSim.Grid.InventoryServer
m_log.InfoFormat("[GRID AGENT INVENTORY]: Processing request for inventory of {0}", userID);
// uncomment me to simulate an overloaded inventory server
- Thread.Sleep(18000);
+ //Thread.Sleep(18000);
InventoryCollection invCollection = new InventoryCollection();
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index 490457de4a..1c7e98ef74 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -486,6 +486,7 @@ namespace OpenSim.Region.Environment.Scenes
if (userInfo == null)
{
m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId.ToString());
+
return;
}
@@ -509,12 +510,14 @@ namespace OpenSim.Region.Environment.Scenes
else
{
m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemID.ToString());
+
return;
}
}
else
{
m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemID.ToString() + ", no root folder");
+
return;
}
}