From 8b28668b28bf4ceff8166f1fddb023016641bc79 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 6 Dec 2021 23:41:39 +0000 Subject: [PATCH] do not consider a hyperlink a fallback region --- OpenSim/Services/GridService/GridService.cs | 24 +++++++++++-------- .../Services/LLLoginService/LLLoginService.cs | 6 ++--- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index a08b117037..55d0828338 100755 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs @@ -790,17 +790,21 @@ namespace OpenSim.Services.GridService List ret = new List(); List regions = m_Database.GetFallbackRegions(scopeID); + if(regions.Count > 0) + { + if (regions.Count > 1) + { + regions.Sort(new RegionDataDistanceCompare(x, y)); + } - if(regions.Count > 1) - { - RegionDataDistanceCompare distanceComparer = new RegionDataDistanceCompare(x, y); - regions.Sort(distanceComparer); - } - - foreach (RegionData r in regions) - { - if ((Convert.ToInt32(r.Data["flags"]) & (int)OpenSim.Framework.RegionFlags.RegionOnline) != 0) - ret.Add(RegionData2RegionInfo(r)); + foreach (RegionData r in regions) + { + int rflags = Convert.ToInt32(r.Data["flags"]); + if((rflags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0) + continue; + if ((rflags & (int)OpenSim.Framework.RegionFlags.RegionOnline) != 0) + ret.Add(RegionData2RegionInfo(r)); + } } m_log.DebugFormat("[GRID SERVICE]: Fallback returned {0} regions", ret.Count); diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 900446b900..1680d4a917 100755 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs @@ -804,11 +804,9 @@ namespace OpenSim.Services.LLLoginService List regions = m_GridService.GetFallbackRegions(scopeID, (int)Util.RegionToWorldLoc(1000), (int)Util.RegionToWorldLoc(1000)); if (regions != null && regions.Count > 0) { - hyperlinks = m_GridService.GetHyperlinks(scopeID); - IEnumerable availableRegions = regions.Except(hyperlinks); - if (availableRegions.Count() > 0) - return availableRegions.ElementAt(0); + return regions[0]; } + // No fallbacks, try to find an arbitrary region that is not a hyperlink // maxNumber is fixed for now; maybe use some search pattern with increasing maxSize here? regions = m_GridService.GetRegionsByName(scopeID, "", 10);