From 18c5dc0953a1c142fd8c13658f6183d5b3c3482a Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 28 Aug 2009 17:19:45 +0100
Subject: Try to cache system folders if they aren't already there when one is
requested This operation can be performed legitimately on standalones without
a logged in user
---
.../ServiceConnectorsOut/Inventory/InventoryCache.cs | 13 +++++++++++++
1 file changed, 13 insertions(+)
(limited to 'OpenSim/Region/CoreModules')
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs
index 73ffc5e..3c3534f 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs
@@ -145,6 +145,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
m_InventoryCache.Remove(userID);
}
+ ///
+ /// Get the system folder for a particular asset type
+ ///
+ ///
+ ///
+ ///
public InventoryFolderBase GetFolderForType(UUID userID, AssetType type)
{
Dictionary folders = null;
@@ -152,6 +158,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
lock (m_InventoryCache)
{
m_InventoryCache.TryGetValue(userID, out folders);
+
+ // In some situations (such as non-secured standalones), system folders can be requested without
+ // the user being logged in. So we need to try caching them here if we don't already have them.
+ if (null == folders)
+ CacheSystemFolders(userID);
+
+ m_InventoryCache.TryGetValue(userID, out folders);
}
if ((folders != null) && folders.ContainsKey(type))
--
cgit v1.1