diff --git a/OpenSim/Framework/Communications/LoginService.cs b/OpenSim/Framework/Communications/LoginService.cs
index 08b071f3c5..8fcb4f5027 100644
--- a/OpenSim/Framework/Communications/LoginService.cs
+++ b/OpenSim/Framework/Communications/LoginService.cs
@@ -94,7 +94,7 @@ namespace OpenSim.Framework.Communications
///
///
/// This will be thrown if there is a problem with the inventory service
- protected abstract InventoryData GetInventorySkeleton(LLUUID userID);
+ protected abstract InventoryData GetInventorySkeleton(LLUUID userID, string inventoryServerUrl);
///
/// Called when we receive the client's initial XMLRPC login_to_simulator request message
@@ -230,7 +230,7 @@ namespace OpenSim.Framework.Communications
try
{
- inventData = GetInventorySkeleton(agentID);
+ inventData = GetInventorySkeleton(agentID, userProfile.UserInventoryURI);
}
catch (Exception e)
{
@@ -386,7 +386,7 @@ namespace OpenSim.Framework.Communications
LLUUID agentID = userProfile.ID;
// Inventory Library Section
- InventoryData inventData = GetInventorySkeleton(agentID);
+ InventoryData inventData = GetInventorySkeleton(agentID, userProfile.UserInventoryURI);
ArrayList AgentInventoryArray = inventData.InventoryArray;
Hashtable InventoryRootHash = new Hashtable();
diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs
index 165700ce92..a4dce5e8a5 100644
--- a/OpenSim/Grid/UserServer/UserLoginService.cs
+++ b/OpenSim/Grid/UserServer/UserLoginService.cs
@@ -419,15 +419,21 @@ namespace OpenSim.Grid.UserServer
}
// See LoginService
- protected override InventoryData GetInventorySkeleton(LLUUID userID)
+ protected override InventoryData GetInventorySkeleton(LLUUID userID, string serverUrl)
{
+ string invUrl = m_config.InventoryUrl;
+ if (serverUrl != String.Empty)
+ {
+ invUrl = serverUrl;
+ }
+
m_log.DebugFormat(
"[LOGIN]: Contacting inventory service at {0} for inventory skeleton of user {1}",
m_config.InventoryUrl, userID);
List folders
= SynchronousRestObjectPoster.BeginPostObject>(
- "POST", m_config.InventoryUrl + "RootFolders/", userID.UUID);
+ "POST", invUrl + "RootFolders/", userID.UUID);
if (null == folders || folders.Count == 0)
{
@@ -440,7 +446,7 @@ namespace OpenSim.Grid.UserServer
// exist.
bool created =
SynchronousRestObjectPoster.BeginPostObject(
- "POST", m_config.InventoryUrl + "CreateInventory/", userID.UUID);
+ "POST", invUrl + "CreateInventory/", userID.UUID);
if (!created)
{
@@ -456,7 +462,7 @@ namespace OpenSim.Grid.UserServer
}
folders = SynchronousRestObjectPoster.BeginPostObject>(
- "POST", m_config.InventoryUrl + "RootFolders/", userID.UUID);
+ "POST", invUrl + "RootFolders/", userID.UUID);
}
if (folders != null && folders.Count > 0)
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index 8b42e2ec55..60e00a2109 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -602,6 +602,13 @@ namespace OpenSim
}
break;
+
+ case "Add-InventoryHost":
+ if (cmdparams.Length > 0)
+ {
+ m_commsManager.AddInventoryService(cmdparams[0]);
+ }
+ break;
default:
string[] tmpPluginArgs = new string[cmdparams.Length + 1];
cmdparams.CopyTo(tmpPluginArgs, 1);
diff --git a/OpenSim/Region/Communications/Local/LocalLoginService.cs b/OpenSim/Region/Communications/Local/LocalLoginService.cs
index 5f4558dfe2..30a639a299 100644
--- a/OpenSim/Region/Communications/Local/LocalLoginService.cs
+++ b/OpenSim/Region/Communications/Local/LocalLoginService.cs
@@ -258,7 +258,7 @@ namespace OpenSim.Region.Communications.Local
}
// See LoginService
- protected override InventoryData GetInventorySkeleton(LLUUID userID)
+ protected override InventoryData GetInventorySkeleton(LLUUID userID, string serverUrl)
{
List folders = m_Parent.InventoryService.GetInventorySkeleton(userID);