varregion: enforce multiple of 256 for region size when parameters fetched from user.

Output info and warning messages for non-legacy region sizes.
varregion
Robert Adams 2013-11-01 16:06:19 -07:00
parent ff5885ab23
commit 976530569a
1 changed files with 33 additions and 0 deletions

View File

@ -99,6 +99,7 @@ namespace OpenSim.Framework
public class RegionInfo public class RegionInfo
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly string LogHeader = "[REGION INFO]";
public bool commFailTF = false; public bool commFailTF = false;
public ConfigurationMember configMember; public ConfigurationMember configMember;
@ -632,6 +633,8 @@ namespace OpenSim.Framework
config.Set("SizeZ", configSizeX); config.Set("SizeZ", configSizeX);
RegionSizeZ = Convert.ToUInt32(configSizeZ); RegionSizeZ = Convert.ToUInt32(configSizeZ);
DoRegionSizeSanityChecks();
// InternalAddress // InternalAddress
// //
IPAddress address; IPAddress address;
@ -750,6 +753,36 @@ namespace OpenSim.Framework
} }
} }
// Make sure user specified region sizes are sane.
// Must be multiples of legacy region size (256).
private void DoRegionSizeSanityChecks()
{
if (RegionSizeX != Constants.RegionSize || RegionSizeY != Constants.RegionSize)
{
// Doing non-legacy region sizes.
// Enforce region size to be multiples of the legacy region size (256)
uint partial = RegionSizeX % Constants.RegionSize;
if (partial != 0)
{
RegionSizeX -= partial;
if (RegionSizeX == 0)
RegionSizeX = Constants.RegionSize;
m_log.WarnFormat("{0} Region size must be multiple of {1}. Enforcing {2}.RegionSizeX={3} instead of specified {4}",
LogHeader, Constants.RegionSize, m_regionName, RegionSizeX, RegionSizeX + partial);
}
partial = RegionSizeY % Constants.RegionSize;
if (partial != 0)
{
RegionSizeY -= partial;
if (RegionSizeY == 0)
RegionSizeY = Constants.RegionSize;
m_log.WarnFormat("{0} Region size must be multiple of {1}. Enforcing {2}.RegionSizeY={3} instead of specified {4}",
LogHeader, Constants.RegionSize, m_regionName, RegionSizeY, RegionSizeY + partial);
}
m_log.InfoFormat("{0} Region {1} size set to x={2}, y={3}", LogHeader, m_regionName, RegionSizeX, RegionSizeY);
}
}
private void WriteNiniConfig(IConfigSource source) private void WriteNiniConfig(IConfigSource source)
{ {
IConfig config = source.Configs[RegionName]; IConfig config = source.Configs[RegionName];