diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
index b98cec76e2..d010bd555a 100644
--- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
+++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
@@ -379,7 +379,7 @@ namespace OpenSim.Framework.Communications.Cache
baseFolder.Type = (short) type;
baseFolder.Version = RootFolder.Version;
- m_commsManager.InventoryService.AddFolder(baseFolder);
+ m_commsManager.InventoryService.UpdateFolder(baseFolder);
}
else
{
diff --git a/OpenSim/Framework/Communications/IInventoryServices.cs b/OpenSim/Framework/Communications/IInventoryServices.cs
index f7a885779c..8dc09bc8eb 100644
--- a/OpenSim/Framework/Communications/IInventoryServices.cs
+++ b/OpenSim/Framework/Communications/IInventoryServices.cs
@@ -57,6 +57,13 @@ namespace OpenSim.Framework.Communications
/// true if the folder was successfully added
bool AddFolder(InventoryFolderBase folder);
+ ///
+ /// Update a folder in the user's inventory
+ ///
+ ///
+ /// true if the folder was successfully updated
+ bool UpdateFolder(InventoryFolderBase folder);
+
///
/// Move an inventory folder to a new location
///
diff --git a/OpenSim/Framework/Communications/InventoryServiceBase.cs b/OpenSim/Framework/Communications/InventoryServiceBase.cs
index dffeed3b64..89ccf9360e 100644
--- a/OpenSim/Framework/Communications/InventoryServiceBase.cs
+++ b/OpenSim/Framework/Communications/InventoryServiceBase.cs
@@ -198,6 +198,21 @@ namespace OpenSim.Framework.Communications
return true;
}
+ // See IInventoryServices
+ public bool UpdateFolder(InventoryFolderBase folder)
+ {
+ m_log.DebugFormat(
+ "[AGENT INVENTORY]: Updating folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
+
+ foreach (KeyValuePair plugin in m_plugins)
+ {
+ plugin.Value.updateInventoryFolder(folder);
+ }
+
+ // FIXME: Should return false on failure
+ return true;
+ }
+
// See IInventoryServices
public bool MoveFolder(InventoryFolderBase folder)
{
diff --git a/OpenSim/Grid/InventoryServer/Main.cs b/OpenSim/Grid/InventoryServer/Main.cs
index 4300554225..a0688921fe 100644
--- a/OpenSim/Grid/InventoryServer/Main.cs
+++ b/OpenSim/Grid/InventoryServer/Main.cs
@@ -96,6 +96,10 @@ namespace OpenSim.Grid.InventoryServer
new RestDeserialisehandler(
"POST", "/NewFolder/", m_inventoryService.AddFolder));
+ m_httpServer.AddStreamHandler(
+ new RestDeserialisehandler(
+ "POST", "/UpdateFolder/", m_inventoryService.UpdateFolder));
+
m_httpServer.AddStreamHandler(
new RestDeserialisehandler(
"POST", "/MoveFolder/", m_inventoryService.MoveFolder));
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs
index 9b3d8781f3..dfc741aaf6 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs
@@ -175,6 +175,26 @@ namespace OpenSim.Region.Communications.OGS1
return false;
}
+ ///
+ ///
+ ///
+ ///
+ public bool UpdateFolder(InventoryFolderBase folder)
+ {
+ try
+ {
+ return SynchronousRestObjectPoster.BeginPostObject(
+ "POST", _inventoryServerUrl + "/UpdateFolder/", folder);
+ }
+ catch (WebException e)
+ {
+ m_log.ErrorFormat("[OGS1 INVENTORY SERVICE]: Update inventory folder operation failed, {0} {1}",
+ e.Source, e.Message);
+ }
+
+ return false;
+ }
+
///
///
///