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