From d3cd2b0ae498b67718af05bd1b6186c68ad4234f Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Sun, 20 Apr 2008 18:19:34 +0000 Subject: * On grid mode, if the inventory service is responding but returning an empty response to a whole agent inventory request, then post an inventory login failure message. IMO, this is better than allowing the agent to login with an apparantly blank inventory. --- OpenSim/Framework/Communications/LoginService.cs | 4 ++-- OpenSim/Grid/UserServer/UserLoginService.cs | 24 ++++-------------------- 2 files changed, 6 insertions(+), 22 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Framework/Communications/LoginService.cs b/OpenSim/Framework/Communications/LoginService.cs index d610c51..ce8aa23 100644 --- a/OpenSim/Framework/Communications/LoginService.cs +++ b/OpenSim/Framework/Communications/LoginService.cs @@ -84,7 +84,7 @@ namespace OpenSim.Framework.UserManagement /// /// /// - /// This will be thrown if there is a problem with the inventory service + /// This will be thrown if there is a problem with the inventory service protected abstract InventoryData GetInventorySkeleton(LLUUID userID); /// @@ -218,7 +218,7 @@ namespace OpenSim.Framework.UserManagement { inventData = GetInventorySkeleton(agentID); } - catch (System.Net.WebException e) + catch (Exception e) { m_log.ErrorFormat( "[LOGIN END]: Error retrieving inventory skeleton of agent {0}, {1} - {2}", diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index d35a471..a3bc9f0 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs @@ -306,6 +306,7 @@ namespace OpenSim.Grid.UserServer "[LOGIN]: Contacting inventory service at {0} for inventory skeleton of agent {1}", m_config.InventoryUrl, userID); + List folders = SynchronousRestObjectPoster.BeginPostObject>( "POST", m_config.InventoryUrl + "RootFolders/", userID.UUID); @@ -355,26 +356,9 @@ namespace OpenSim.Grid.UserServer } else { - m_log.Warn("[LOGIN]: The root inventory folder could still not be retrieved" + - " for user ID " + userID); - - AgentInventory userInventory = new AgentInventory(); - userInventory.CreateRootFolder(userID); - - ArrayList AgentInventoryArray = new ArrayList(); - Hashtable TempHash; - foreach (InventoryFolder InvFolder in userInventory.InventoryFolders.Values) - { - TempHash = new Hashtable(); - TempHash["name"] = InvFolder.FolderName; - TempHash["parent_id"] = InvFolder.ParentID.ToString(); - TempHash["version"] = (Int32) InvFolder.Version; - TempHash["type_default"] = (Int32) InvFolder.DefaultType; - TempHash["folder_id"] = InvFolder.FolderID.ToString(); - AgentInventoryArray.Add(TempHash); - } - - return new InventoryData(AgentInventoryArray, userInventory.InventoryRoot.FolderID); + throw new Exception( + String.Format( + "A root inventory folder for {0} could not be retrieved from the inventory service", userID)); } } } -- cgit v1.1