From b6678faf3499c85cbe4e1655acc907e29c30eb59 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 9 Oct 2009 17:28:16 +0100
Subject: * 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(-)

(limited to 'OpenSim/Region/Application/OpenSimBase.cs')

diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index 4592c31..3df3a1c 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);
         }
         
         /// <summary>
@@ -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);
         }
-- 
cgit v1.1