diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index dcc88c4144..914e4d64bc 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -263,6 +263,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController Scene rebootedScene = null; GetSceneFromRegionParams(requestData, responseData, out rebootedScene); + IRestartModule restartModule = rebootedScene.RequestModuleInterface(); + responseData["success"] = false; responseData["accepted"] = true; responseData["rebooting"] = true; @@ -273,6 +275,23 @@ namespace OpenSim.ApplicationPlugins.RemoteController if (requestData.ContainsKey("alerts")) { string[] alertTimes = requestData["alerts"].ToString().Split( new char[] {','}); + if (alertTimes.Length == 1 && Convert.ToInt32(alertTimes[0]) == -1) + { + if (restartModule != null) + { + message = "Restart has been cancelled"; + + if (requestData.ContainsKey("message")) + message = requestData["message"].ToString(); + + restartModule.AbortRestart(message); + + responseData["success"] = true; + responseData["rebooting"] = false; + + return; + } + } foreach (string a in alertTimes) times.Add(Convert.ToInt32(a)); } @@ -305,7 +324,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController notice = false; } - IRestartModule restartModule = rebootedScene.RequestModuleInterface(); if (restartModule != null) { restartModule.ScheduleRestart(UUID.Zero, message, times.ToArray(), notice); diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index bbaa08ef03..a50a61d43a 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -2766,7 +2766,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP reply.Data.ParcelID = parcelID; reply.Data.OwnerID = land.OwnerID; reply.Data.Name = Utils.StringToBytes(land.Name); - reply.Data.Desc = Utils.StringToBytes(land.Description); + reply.Data.Desc = Utils.StringToBytes(land.Description.Substring(0, land.Description.Length > 254 ? 254: land.Description.Length)); reply.Data.ActualArea = land.Area; reply.Data.BillableArea = land.Area; // TODO: what is this? diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 161cf82588..d5e3314c25 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -256,6 +256,12 @@ namespace OpenSim.Region.CoreModules.World.Estate IRestartModule restartModule = Scene.RequestModuleInterface(); if (restartModule != null) { + if (timeInSeconds == -1) + { + restartModule.AbortRestart("Restart aborted by region manager"); + return; + } + List times = new List(); while (timeInSeconds > 0) { diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 2d54ed1ca2..07b28c752e 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -190,10 +190,10 @@ namespace OpenSim.Region.CoreModules.World.Land else { // Normal Calculations - int parcelMax = (int)((double)(LandData.Area - * m_scene.RegionInfo.ObjectCapacity) - * m_scene.RegionInfo.RegionSettings.ObjectBonus) - / 65536; + int parcelMax = (int)((long)LandData.Area + * (long)m_scene.RegionInfo.ObjectCapacity + * (long)m_scene.RegionInfo.RegionSettings.ObjectBonus + / 65536L); m_log.DebugFormat("Area: {0}, Capacity {1}, Bonus {2}, Parcel {3}", LandData.Area, m_scene.RegionInfo.ObjectCapacity, m_scene.RegionInfo.RegionSettings.ObjectBonus, parcelMax); return parcelMax; } @@ -208,9 +208,9 @@ namespace OpenSim.Region.CoreModules.World.Land else { // Normal Calculations - int parcelMax = LandData.Area - * m_scene.RegionInfo.ObjectCapacity - / 65536; + int parcelMax = (int)((long)LandData.Area + * (long)m_scene.RegionInfo.ObjectCapacity + / 65536L); return parcelMax; } } @@ -226,7 +226,7 @@ namespace OpenSim.Region.CoreModules.World.Land //Normal Calculations int simMax = (int)((long)LandData.SimwideArea * (long)m_scene.RegionInfo.ObjectCapacity / 65536L); - m_log.DebugFormat("Simwide Area: {0}, Capacity {1}, SimMax {2}", LandData.SimwideArea, m_scene.RegionInfo.ObjectCapacity, simMax); + // m_log.DebugFormat("Simwide Area: {0}, Capacity {1}, SimMax {2}", LandData.SimwideArea, m_scene.RegionInfo.ObjectCapacity, simMax); return simMax; } } diff --git a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs index 7f6f4df2c6..86821c605d 100644 --- a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs +++ b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs @@ -240,6 +240,9 @@ namespace OpenSim.Region.CoreModules.World.Region if (m_DialogModule != null && message != String.Empty) m_DialogModule.SendGeneralAlert(message); } + if (m_MarkerPath != String.Empty) + File.Delete(Path.Combine(m_MarkerPath, + m_Scene.RegionInfo.RegionID.ToString())); } private void HandleRegionRestart(string module, string[] args)