aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorMelanie2012-01-28 22:19:10 +0100
committerMelanie2012-01-28 22:19:10 +0100
commit7c824f02b445579c0ef54a2212f851ae811a639d (patch)
treec8781c80bbd861b739940403e9f83efa0101522b /OpenSim
parentFix calculating land prim count type width issue (diff)
downloadopensim-SC-7c824f02b445579c0ef54a2212f851ae811a639d.zip
opensim-SC-7c824f02b445579c0ef54a2212f851ae811a639d.tar.gz
opensim-SC-7c824f02b445579c0ef54a2212f851ae811a639d.tar.bz2
opensim-SC-7c824f02b445579c0ef54a2212f851ae811a639d.tar.xz
Add the ability to abort a pending restart using the viewer UI or a
RemoteAdmin message
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs20
-rw-r--r--OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs6
-rw-r--r--OpenSim/Region/CoreModules/World/Region/RestartModule.cs3
3 files changed, 28 insertions, 1 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
index dcc88c4..914e4d6 100644
--- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
+++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
@@ -263,6 +263,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
263 Scene rebootedScene = null; 263 Scene rebootedScene = null;
264 GetSceneFromRegionParams(requestData, responseData, out rebootedScene); 264 GetSceneFromRegionParams(requestData, responseData, out rebootedScene);
265 265
266 IRestartModule restartModule = rebootedScene.RequestModuleInterface<IRestartModule>();
267
266 responseData["success"] = false; 268 responseData["success"] = false;
267 responseData["accepted"] = true; 269 responseData["accepted"] = true;
268 responseData["rebooting"] = true; 270 responseData["rebooting"] = true;
@@ -273,6 +275,23 @@ namespace OpenSim.ApplicationPlugins.RemoteController
273 if (requestData.ContainsKey("alerts")) 275 if (requestData.ContainsKey("alerts"))
274 { 276 {
275 string[] alertTimes = requestData["alerts"].ToString().Split( new char[] {','}); 277 string[] alertTimes = requestData["alerts"].ToString().Split( new char[] {','});
278 if (alertTimes.Length == 1 && Convert.ToInt32(alertTimes[0]) == -1)
279 {
280 if (restartModule != null)
281 {
282 message = "Restart has been cancelled";
283
284 if (requestData.ContainsKey("message"))
285 message = requestData["message"].ToString();
286
287 restartModule.AbortRestart(message);
288
289 responseData["success"] = true;
290 responseData["rebooting"] = false;
291
292 return;
293 }
294 }
276 foreach (string a in alertTimes) 295 foreach (string a in alertTimes)
277 times.Add(Convert.ToInt32(a)); 296 times.Add(Convert.ToInt32(a));
278 } 297 }
@@ -305,7 +324,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
305 notice = false; 324 notice = false;
306 } 325 }
307 326
308 IRestartModule restartModule = rebootedScene.RequestModuleInterface<IRestartModule>();
309 if (restartModule != null) 327 if (restartModule != null)
310 { 328 {
311 restartModule.ScheduleRestart(UUID.Zero, message, times.ToArray(), notice); 329 restartModule.ScheduleRestart(UUID.Zero, message, times.ToArray(), notice);
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
index 161cf82..d5e3314 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
256 IRestartModule restartModule = Scene.RequestModuleInterface<IRestartModule>(); 256 IRestartModule restartModule = Scene.RequestModuleInterface<IRestartModule>();
257 if (restartModule != null) 257 if (restartModule != null)
258 { 258 {
259 if (timeInSeconds == -1)
260 {
261 restartModule.AbortRestart("Restart aborted by region manager");
262 return;
263 }
264
259 List<int> times = new List<int>(); 265 List<int> times = new List<int>();
260 while (timeInSeconds > 0) 266 while (timeInSeconds > 0)
261 { 267 {
diff --git a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs
index 7f6f4df..86821c6 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
240 if (m_DialogModule != null && message != String.Empty) 240 if (m_DialogModule != null && message != String.Empty)
241 m_DialogModule.SendGeneralAlert(message); 241 m_DialogModule.SendGeneralAlert(message);
242 } 242 }
243 if (m_MarkerPath != String.Empty)
244 File.Delete(Path.Combine(m_MarkerPath,
245 m_Scene.RegionInfo.RegionID.ToString()));
243 } 246 }
244 247
245 private void HandleRegionRestart(string module, string[] args) 248 private void HandleRegionRestart(string module, string[] args)