From f69f6961815c3916df8e30fbfdb2faa4906cf025 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Thu, 19 Jun 2008 17:03:59 +0000 Subject: * Temporary workaround for mantis 1568. If the avatar apperance factory now throws any exception, we will carry on with the default appearance rather than terminating the client login --- .../Region/Communications/OGS1/OGS1UserServices.cs | 16 +++++++-------- OpenSim/Region/Environment/Scenes/Scene.cs | 23 +++++++++++++++++++--- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs index a31570e..0ffc4b2 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs @@ -232,17 +232,17 @@ namespace OpenSim.Region.Communications.OGS1 IList parameters = new ArrayList(); parameters.Add(param); XmlRpcRequest req = new XmlRpcRequest("logout_of_simulator", parameters); + try { - XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 3000); + req.Send(m_parent.NetworkServersInfo.UserURL, 3000); } catch (WebException) { m_log.Warn("[LOGOFF]: Unable to notify grid server of user logoff"); } - - } + public UserProfileData GetUserProfile(string firstName, string lastName) { return GetUserProfile(firstName + " " + lastName); @@ -556,7 +556,6 @@ namespace OpenSim.Region.Communications.OGS1 param["ownerID"] = friendlistowner.UUID.ToString(); param["friendID"] = friend.UUID.ToString(); - IList parameters = new ArrayList(); parameters.Add(param); @@ -682,10 +681,10 @@ namespace OpenSim.Region.Communications.OGS1 #endregion /// Appearance - /// TODO: stubs for now to get us to a compiling state gently public AvatarAppearance GetUserAppearance(LLUUID user) { AvatarAppearance appearance = null; + try { Hashtable param = new Hashtable(); @@ -696,15 +695,14 @@ namespace OpenSim.Region.Communications.OGS1 XmlRpcRequest req = new XmlRpcRequest("get_avatar_appearance", parameters); XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 8000); Hashtable respData = (Hashtable) resp.Value; - + return ConvertXMLRPCDataToAvatarAppearance(respData); } catch (WebException e) { - m_log.Warn("[OGS1 USER SERVICES]: Error when trying to fetch Avatar's appearance: " + - e.Message); - // Return Empty list (no friends) + m_log.ErrorFormat("[OGS1 USER SERVICES]: Network problems when trying to fetch appearance for avatar {0}, {1}", user, e.Message); } + return appearance; } diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 7e3937c..cfebd14 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -2131,14 +2131,31 @@ namespace OpenSim.Region.Environment.Scenes return avatar; } + /// + /// Get the avatar apperance for the given client. + /// + /// + /// public void GetAvatarAppearance(IClientAPI client, out AvatarAppearance appearance) { appearance = null; // VS needs this line, mono doesn't - if (m_AvatarFactory == null || - !m_AvatarFactory.TryGetAvatarAppearance(client.AgentId, out appearance)) + + try { - m_log.Warn("[APPEARANCE]: Appearance not found, creating default"); + if (m_AvatarFactory == null || + !m_AvatarFactory.TryGetAvatarAppearance(client.AgentId, out appearance)) + { + m_log.Warn("[APPEARANCE]: Appearance not found, creating default"); + appearance = new AvatarAppearance(); + } } + catch (Exception e) + { + m_log.ErrorFormat( + "[APPERANCE]: Problem when fetching appearance for avatar {0}, {1}, using default. {2}", + client.Name, client.AgentId, e); + appearance = new AvatarAppearance(); + } } /// -- cgit v1.1