diff --git a/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs b/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs
index 5f532e053b..f55f323da9 100644
--- a/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs
+++ b/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs
@@ -62,6 +62,13 @@ namespace OpenSim.Framework.Communications.Cache
{
}
+ ///
+ /// Create a new subfolder. This exists only in the cache.
+ ///
+ ///
+ ///
+ ///
+ /// The newly created subfolder. Returns null if the folder already exists
public InventoryFolderImpl CreateNewSubFolder(LLUUID folderID, string folderName, ushort type)
{
lock (SubFolders)
diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs
index ec06a23a15..4627f75f61 100644
--- a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs
+++ b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs
@@ -184,6 +184,12 @@ namespace OpenSim.Framework.Communications.Cache
createdBaseFolder.Version = createdFolder.Version;
m_commsManager.InventoryService.AddNewInventoryFolder(remoteClient.AgentId, createdBaseFolder);
}
+ else
+ {
+ m_log.WarnFormat(
+ "[INVENTORY CACHE]: Tried to create folder {0} {1} for user {2} {3} but the folder already exists",
+ folderName, folderID, remoteClient.Name, remoteClient.AgentId);
+ }
}
else
{
@@ -191,16 +197,31 @@ namespace OpenSim.Framework.Communications.Cache
if (folder != null)
{
InventoryFolderImpl createdFolder = folder.CreateNewSubFolder(folderID, folderName, folderType);
-
- InventoryFolderBase createdBaseFolder = new InventoryFolderBase();
- createdBaseFolder.Owner = createdFolder.Owner;
- createdBaseFolder.ID = createdFolder.ID;
- createdBaseFolder.Name = createdFolder.Name;
- createdBaseFolder.ParentID = createdFolder.ParentID;
- createdBaseFolder.Type = createdFolder.Type;
- createdBaseFolder.Version = createdFolder.Version;
-
- m_commsManager.InventoryService.AddNewInventoryFolder(remoteClient.AgentId, createdBaseFolder);
+
+ if (createdFolder != null)
+ {
+ InventoryFolderBase createdBaseFolder = new InventoryFolderBase();
+ createdBaseFolder.Owner = createdFolder.Owner;
+ createdBaseFolder.ID = createdFolder.ID;
+ createdBaseFolder.Name = createdFolder.Name;
+ createdBaseFolder.ParentID = createdFolder.ParentID;
+ createdBaseFolder.Type = createdFolder.Type;
+ createdBaseFolder.Version = createdFolder.Version;
+
+ m_commsManager.InventoryService.AddNewInventoryFolder(remoteClient.AgentId, createdBaseFolder);
+ }
+ else
+ {
+ m_log.WarnFormat(
+ "[INVENTORY CACHE]: Tried to create folder {0} {1} for user {2} {3} but the folder already exists",
+ folderName, folderID, remoteClient.Name, remoteClient.AgentId);
+ }
+ }
+ else
+ {
+ m_log.WarnFormat(
+ "[INVENTORY CACHE]: Could not find parent folder with id {0} in order to create folder {1} {2} for user {3} {4}",
+ parentID, folderName, folderID, remoteClient.Name, remoteClient.AgentId);
}
}
}