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);