diff --git a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs index cec997dbf3..544414910a 100644 --- a/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs +++ b/OpenSim/Capabilities/Handlers/FetchInventory/FetchInvDescHandler.cs @@ -130,23 +130,32 @@ namespace OpenSim.Capabilities.Handlers httpResponse.RawBuffer = EmptyResponse; return; } + StringBuilder sb = osStringBuilderCache.Acquire(); sb.Append("[WEB FETCH INV DESC HANDLER]: Unable to fetch folders owned by "); sb.Append("Unknown"); sb.Append(" :"); - int limit = 9; + int limit = 5; + int count = 0; foreach (UUID bad in bad_folders) { if (BadRequests.ContainsKey(bad)) continue; sb.Append(" "); sb.Append(bad.ToString()); + ++count; if (--limit < 0) break; } - if (limit < 0) - sb.Append(" ..."); - m_log.Warn(osStringBuilderCache.GetStringAndRelease(sb)); + + if(count > 0) + { + if (limit < 0) + sb.Append(" ..."); + m_log.Warn(osStringBuilderCache.GetStringAndRelease(sb)); + } + else + osStringBuilderCache.Release(sb); sb = osStringBuilderCache.Acquire(); sb.Append("foldersbad_folders"); diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs index 80d8107166..cd89d8646e 100644 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs @@ -84,7 +84,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement words[0] = words[0].Trim(); // it has at least 1 words[1] = words[1].Trim().ToLower(); string match1 = "@" + words[1]; - if (words[0] == String.Empty) // query was @foo.com? + if (String.IsNullOrWhiteSpace(words[0])) // query was @foo.com? { foreach (UserData d in m_userCacheByID.Values) { @@ -132,16 +132,19 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement return; } - UserAgentServiceConnector uasConn = new UserAgentServiceConnector(uriStr); - UUID userID = UUID.Zero; - try + uriStr = uriStr.ToLower(); + if(!WebUtil.GlobalExpiringBadURLs.ContainsKey(uriStr)) { - userID = uasConn.GetUUID(names[0], names[1]); - } - catch (Exception e) - { - m_log.Debug("[USER MANAGEMENT MODULE]: GetUUID call failed ", e); + UserAgentServiceConnector uasConn = new UserAgentServiceConnector(uriStr); + try + { + userID = uasConn.GetUUID(names[0], names[1]); + } + catch (Exception e) + { + m_log.Debug("[USER MANAGEMENT MODULE]: GetUUID call failed ", e); + } } if (!userID.Equals(UUID.Zero)) @@ -151,9 +154,6 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement ud.FirstName = words[0]; ud.LastName = "@" + words[1]; users.Add(ud); - // WARNING! that uriStr is not quite right... it may be missing the / at the end, - // which will cause trouble (duplicate entries on some tables). We should - // get the UUI instead from the UAS. TO BE FIXED. AddUser(userID, names[0], names[1], uriStr); m_log.DebugFormat("[USER MANAGEMENT MODULE]: User {0}@{1} found", words[0], words[1]); } @@ -162,17 +162,6 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement } } } - //else - //{ - // foreach (UserData d in m_UserCache.Values) - // { - // if (d.LastName.StartsWith("@") && - // (d.FirstName.ToLower().StartsWith(query.ToLower()) || - // d.LastName.ToLower().StartsWith(query.ToLower()))) - // users.Add(d); - // } - //} } - } } diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs index 0b55563319..37d57e14f1 100755 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs @@ -33,27 +33,23 @@ using System.Threading; using OpenSim.Framework; using OpenSim.Framework.Console; -using OpenSim.Framework.Monitoring; -using OpenSim.Region.ClientStack.LindenUDP; -using OpenSim.Region.Framework; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using OpenSim.Services.Interfaces; using OpenSim.Services.Connectors.Hypergrid; using OpenMetaverse; -using OpenMetaverse.Packets; using log4net; using Nini.Config; using Mono.Addins; -using DirFindFlags = OpenMetaverse.DirectoryManager.DirFindFlags; namespace OpenSim.Region.CoreModules.Framework.UserManagement { [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "UserManagementModule")] public class UserManagementModule : ISharedRegionModule, IUserManagement, IPeople { + private const int BADURLEXPIRE = 2 * 60; private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected bool m_Enabled; @@ -449,10 +445,9 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement public virtual string GetUserHomeURL(UUID userID) { - UserData user; - if (GetUser(userID, out user)) + if (GetUser(userID, out UserData user) && user != null) { - if (user.LastWebFail > 0 && Util.GetTimeStamp() - user.LastWebFail > 5 * 60) + if (user.LastWebFail > 0 && Util.GetTimeStamp() - user.LastWebFail > BADURLEXPIRE) user.LastWebFail = -1; return user.HomeURL; } @@ -461,13 +456,12 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement public virtual string GetUserHomeURL(UUID userID, out bool recentFail) { - UserData user; recentFail = false; - if (GetUser(userID, out user)) + if (GetUser(userID, out UserData user)) { if (user.LastWebFail > 0) { - if (Util.GetTimeStamp() - user.LastWebFail > 5 * 60) + if (Util.GetTimeStamp() - user.LastWebFail > BADURLEXPIRE) user.LastWebFail = -1; else recentFail = true; @@ -488,7 +482,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement if(userdata.LastWebFail > 0) { - if(Util.GetTimeStamp() - userdata.LastWebFail > 5 * 60) // 5 minutes + if(Util.GetTimeStamp() - userdata.LastWebFail > BADURLEXPIRE) // 5 minutes return string.Empty; userdata.LastWebFail = -1; } @@ -501,29 +495,32 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement return string.Empty; } - if (!string.IsNullOrEmpty(userdata.HomeURL) && !WebUtil.GlobalExpiringBadURLs.ContainsKey(userdata.HomeURL)) + if (!string.IsNullOrEmpty(userdata.HomeURL)) { -// m_log.DebugFormat("[USER MANAGEMENT MODULE]: Requested url type {0} for {1}", serverType, userID); + string homeuri = userdata.HomeURL.ToLower(); + if (!WebUtil.GlobalExpiringBadURLs.ContainsKey(homeuri)) + { + //m_log.DebugFormat("[USER MANAGEMENT MODULE]: Requested url type {0} for {1}", serverType, userID); + UserAgentServiceConnector uConn = new UserAgentServiceConnector(homeuri); + try + { + userdata.ServerURLs = uConn.GetServerURLs(userID); + } + catch(System.Net.WebException e) + { + m_log.DebugFormat("[USER MANAGEMENT MODULE]: GetServerURLs call failed {0}", e.Message); + WebUtil.GlobalExpiringBadURLs.Add(homeuri, BADURLEXPIRE * 1000); + userdata.ServerURLs = new Dictionary(); + } + catch (Exception e) + { + m_log.Debug("[USER MANAGEMENT MODULE]: GetServerURLs call failed ", e); + userdata.ServerURLs = new Dictionary(); + } - UserAgentServiceConnector uConn = new UserAgentServiceConnector(userdata.HomeURL); - try - { - userdata.ServerURLs = uConn.GetServerURLs(userID); + if (userdata.ServerURLs != null && userdata.ServerURLs.ContainsKey(serverType) && userdata.ServerURLs[serverType] != null) + return userdata.ServerURLs[serverType].ToString(); } - catch(System.Net.WebException e) - { - m_log.DebugFormat("[USER MANAGEMENT MODULE]: GetServerURLs call failed {0}", e.Message); - WebUtil.GlobalExpiringBadURLs.Add(userdata.HomeURL, 120000); - userdata.ServerURLs = new Dictionary(); - } - catch (Exception e) - { - m_log.Debug("[USER MANAGEMENT MODULE]: GetServerURLs call failed ", e); - userdata.ServerURLs = new Dictionary(); - } - - if (userdata.ServerURLs != null && userdata.ServerURLs.ContainsKey(serverType) && userdata.ServerURLs[serverType] != null) - return userdata.ServerURLs[serverType].ToString(); } return string.Empty; } @@ -537,8 +534,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement public virtual string GetUserServerURL(UUID userID, string serverType, out bool recentFail) { recentFail = false; - UserData userdata; - if (!GetUser(userID, out userdata)) + if (!GetUser(userID, out UserData userdata)) return string.Empty; if (userdata.IsLocal) @@ -546,7 +542,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement if (userdata.LastWebFail > 0) { - if (Util.GetTimeStamp() - userdata.LastWebFail > 5 * 60) // 5 minutes + if (Util.GetTimeStamp() - userdata.LastWebFail > BADURLEXPIRE) recentFail = true; else userdata.LastWebFail = -1; @@ -560,33 +556,36 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement return string.Empty; } - if (!recentFail && !string.IsNullOrEmpty(userdata.HomeURL) && !WebUtil.GlobalExpiringBadURLs.ContainsKey(userdata.HomeURL)) + if (!recentFail && !string.IsNullOrEmpty(userdata.HomeURL)) { - // m_log.DebugFormat("[USER MANAGEMENT MODULE]: Requested url type {0} for {1}", serverType, userID); + string homeurl = userdata.HomeURL.ToLower(); + if(!WebUtil.GlobalExpiringBadURLs.ContainsKey(homeurl)) + { + //m_log.DebugFormat("[USER MANAGEMENT MODULE]: Requested url type {0} for {1}", serverType, userID); + UserAgentServiceConnector uConn = new UserAgentServiceConnector(homeurl); + try + { + userdata.ServerURLs = uConn.GetServerURLs(userID); + } + catch (System.Net.WebException e) + { + m_log.DebugFormat("[USER MANAGEMENT MODULE]: GetServerURLs call failed {0}", e.Message); + userdata.ServerURLs = new Dictionary(); + userdata.LastWebFail = Util.GetTimeStamp(); + WebUtil.GlobalExpiringBadURLs.Add(homeurl, BADURLEXPIRE * 1000); + recentFail = true; + } + catch (Exception e) + { + m_log.Debug("[USER MANAGEMENT MODULE]: GetServerURLs call failed ", e); + userdata.ServerURLs = new Dictionary(); + userdata.LastWebFail = Util.GetTimeStamp(); + recentFail = true; + } - UserAgentServiceConnector uConn = new UserAgentServiceConnector(userdata.HomeURL); - try - { - userdata.ServerURLs = uConn.GetServerURLs(userID); + if (userdata.ServerURLs != null && userdata.ServerURLs.ContainsKey(serverType) && userdata.ServerURLs[serverType] != null) + return userdata.ServerURLs[serverType].ToString(); } - catch (System.Net.WebException e) - { - m_log.DebugFormat("[USER MANAGEMENT MODULE]: GetServerURLs call failed {0}", e.Message); - userdata.ServerURLs = new Dictionary(); - userdata.LastWebFail = Util.GetTimeStamp(); - WebUtil.GlobalExpiringBadURLs.Add(userdata.HomeURL, 120000); - recentFail = true; - } - catch (Exception e) - { - m_log.Debug("[USER MANAGEMENT MODULE]: GetServerURLs call failed ", e); - userdata.ServerURLs = new Dictionary(); - userdata.LastWebFail = Util.GetTimeStamp(); - recentFail = true; - } - - if (userdata.ServerURLs != null && userdata.ServerURLs.ContainsKey(serverType) && userdata.ServerURLs[serverType] != null) - return userdata.ServerURLs[serverType].ToString(); } return string.Empty; }