From 4cfa0650fde9e7a07a87fdf3db4a60a94fd915b3 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Thu, 30 Dec 2021 21:06:03 +0000 Subject: [PATCH] gridservice: always merge region flags from config --- OpenSim/Services/GridService/GridService.cs | 37 +++++++++------------ 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index 7c16f62a88..7fe2b68118 100755 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs @@ -355,31 +355,26 @@ namespace OpenSim.Services.GridService RegionData rdata = RegionInfo2RegionData(regionInfos); rdata.ScopeID = scopeID; + int regionFlags = 0; if (region != null) { - int oldFlags = Convert.ToInt32(region.Data["flags"]); - - oldFlags &= ~(int)OpenSim.Framework.RegionFlags.Reservation; - - rdata.Data["flags"] = oldFlags.ToString(); // Preserve flags + regionFlags = Convert.ToInt32(region.Data["flags"]); + regionFlags &= ~(int)OpenSim.Framework.RegionFlags.Reservation; } - else + + if ((gridConfig != null) && !string.IsNullOrEmpty(rdata.RegionName)) { - rdata.Data["flags"] = "0"; - if ((gridConfig != null) && rdata.RegionName != string.Empty) - { - int newFlags = 0; - string regionName = rdata.RegionName.Trim().Replace(' ', '_'); - newFlags = ParseFlags(newFlags, gridConfig.GetString("DefaultRegionFlags", String.Empty)); - newFlags = ParseFlags(newFlags, gridConfig.GetString("Region_" + regionName, String.Empty)); - newFlags = ParseFlags(newFlags, gridConfig.GetString("Region_" + rdata.RegionID.ToString(), String.Empty)); - rdata.Data["flags"] = newFlags.ToString(); - } + string regionName = rdata.RegionName.Trim().Replace(' ', '_'); + regionFlags = ParseFlags(regionFlags, gridConfig.GetString("DefaultRegionFlags", string.Empty)); + string byregionname = gridConfig.GetString("Region_" + regionName, string.Empty); + if(!string.IsNullOrEmpty(byregionname)) + regionFlags = ParseFlags(regionFlags, byregionname); + else + regionFlags = ParseFlags(regionFlags, gridConfig.GetString("Region_" + rdata.RegionID.ToString(), string.Empty)); } - int flags = Convert.ToInt32(rdata.Data["flags"]); - flags |= (int)OpenSim.Framework.RegionFlags.RegionOnline; - rdata.Data["flags"] = flags.ToString(); + regionFlags |= (int)OpenSim.Framework.RegionFlags.RegionOnline; + rdata.Data["flags"] = regionFlags.ToString(); try { @@ -395,9 +390,9 @@ namespace OpenSim.Services.GridService ("[GRID SERVICE]: Region {0} ({1}, {2}x{3}) registered at {4},{5} with flags {6}", regionInfos.RegionName, regionInfos.RegionID, regionInfos.RegionSizeX, regionInfos.RegionSizeY, regionInfos.RegionCoordX, regionInfos.RegionCoordY, - (OpenSim.Framework.RegionFlags)flags); + (OpenSim.Framework.RegionFlags)regionFlags); - return String.Empty; + return string.Empty; } // String describing name and region location of passed region