From b6678faf3499c85cbe4e1655acc907e29c30eb59 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 9 Oct 2009 17:28:16 +0100 Subject: [PATCH] * Apply http://opensimulator.org/mantis/view.php?id=3933 * Remove client servers when regions are closed or removed * Thanks randomhuman! --- OpenSim/Region/Application/OpenSimBase.cs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 4592c318b5..3df3a1cb47 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -459,7 +459,8 @@ namespace OpenSim scene.DeleteAllSceneObjects(); m_sceneManager.CloseScene(scene); - + ShutdownClientServer(scene.RegionInfo); + if (!cleanup) return; @@ -519,7 +520,7 @@ namespace OpenSim } m_sceneManager.CloseScene(scene); - + ShutdownClientServer(scene.RegionInfo); } /// @@ -653,12 +654,10 @@ namespace OpenSim storageManager, m_moduleLoader, false, m_configSettings.PhysicalPrim, m_configSettings.See_into_region_from_neighbor, m_config.Source, m_version); } - - public void handleRestartRegion(RegionInfo whichRegion) + + protected void ShutdownClientServer(RegionInfo whichRegion) { - m_log.Info("[OPENSIM]: Got restart signal from SceneManager"); - - // Shutting down the client server + // Close and remove the clientserver for a region bool foundClientServer = false; int clientServerElement = 0; Location location = new Location(whichRegion.RegionHandle); @@ -678,6 +677,13 @@ namespace OpenSim m_clientServers[clientServerElement].NetworkStop(); m_clientServers.RemoveAt(clientServerElement); } + } + + public void handleRestartRegion(RegionInfo whichRegion) + { + m_log.Info("[OPENSIM]: Got restart signal from SceneManager"); + + ShutdownClientServer(whichRegion); IScene scene; CreateRegion(whichRegion, true, out scene); }