aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorUbitUmarov2017-05-23 07:35:02 +0100
committerUbitUmarov2017-05-23 07:35:02 +0100
commitc0bfaac0ac6873720b7c3721436ca54e93d5072c (patch)
tree62f6b02569ba6dd968d76ad9bf2aa6ccf839d588 /OpenSim/Region
parentreenqueue poll events while conn is open, and not expired (diff)
parent dont log timeouts on stopped threads (diff)
downloadopensim-SC-c0bfaac0ac6873720b7c3721436ca54e93d5072c.zip
opensim-SC-c0bfaac0ac6873720b7c3721436ca54e93d5072c.tar.gz
opensim-SC-c0bfaac0ac6873720b7c3721436ca54e93d5072c.tar.bz2
opensim-SC-c0bfaac0ac6873720b7c3721436ca54e93d5072c.tar.xz
merge master
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Application/Application.cs4
-rw-r--r--OpenSim/Region/Application/OpenSim.cs3
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs2
-rw-r--r--OpenSim/Region/CoreModules/Agent/IPBan/SceneBanner.cs4
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs24
-rw-r--r--OpenSim/Region/CoreModules/Hypergrid/HGWorldMapModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs9
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs5
-rw-r--r--OpenSim/Region/Framework/Scenes/UuidGatherer.cs11
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs68
-rwxr-xr-xOpenSim/Region/ScriptEngine/XEngine/XEngine.cs3
12 files changed, 73 insertions, 64 deletions
diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs
index bc6d7b3..4bd2c28 100644
--- a/OpenSim/Region/Application/Application.cs
+++ b/OpenSim/Region/Application/Application.cs
@@ -77,7 +77,11 @@ namespace OpenSim
77 if(Util.IsWindows()) 77 if(Util.IsWindows())
78 ServicePointManager.DefaultConnectionLimit = 32; 78 ServicePointManager.DefaultConnectionLimit = 32;
79 else 79 else
80 {
80 ServicePointManager.DefaultConnectionLimit = 12; 81 ServicePointManager.DefaultConnectionLimit = 12;
82 try { ServicePointManager.DnsRefreshTimeout = 120000; } // just is case crazy some mono decides to have it infinity
83 catch { }
84 }
81 85
82 ServicePointManager.Expect100Continue = false; 86 ServicePointManager.Expect100Continue = false;
83 ServicePointManager.UseNagleAlgorithm = false; 87 ServicePointManager.UseNagleAlgorithm = false;
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index f9f103a..524f2be 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -504,7 +504,8 @@ namespace OpenSim
504 private void WatchdogTimeoutHandler(Watchdog.ThreadWatchdogInfo twi) 504 private void WatchdogTimeoutHandler(Watchdog.ThreadWatchdogInfo twi)
505 { 505 {
506 int now = Environment.TickCount & Int32.MaxValue; 506 int now = Environment.TickCount & Int32.MaxValue;
507 507 if(twi.Thread.ThreadState == System.Threading.ThreadState.Stopped)
508 return;
508 m_log.ErrorFormat( 509 m_log.ErrorFormat(
509 "[WATCHDOG]: Timeout detected for thread \"{0}\". ThreadState={1}. Last tick was {2}ms ago. {3}", 510 "[WATCHDOG]: Timeout detected for thread \"{0}\". ThreadState={1}. Last tick was {2}ms ago. {3}",
510 twi.Thread.Name, 511 twi.Thread.Name,
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 298c933..f658a70 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -62,7 +62,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
62 /// Handles new client connections 62 /// Handles new client connections
63 /// Constructor takes a single Packet and authenticates everything 63 /// Constructor takes a single Packet and authenticates everything
64 /// </summary> 64 /// </summary>
65 public class LLClientView : IClientAPI, IClientCore, IClientIM, IClientChat, IClientInventory, IStatsCollector 65 public class LLClientView : IClientAPI, IClientCore, IClientIM, IClientChat, IClientInventory, IStatsCollector, IClientIPEndpoint
66 { 66 {
67 /// <value> 67 /// <value>
68 /// Debug packet level. See OpenSim.RegisterConsoleCommands() for more details. 68 /// Debug packet level. See OpenSim.RegisterConsoleCommands() for more details.
diff --git a/OpenSim/Region/CoreModules/Agent/IPBan/SceneBanner.cs b/OpenSim/Region/CoreModules/Agent/IPBan/SceneBanner.cs
index 8502006..b4c68e2 100644
--- a/OpenSim/Region/CoreModules/Agent/IPBan/SceneBanner.cs
+++ b/OpenSim/Region/CoreModules/Agent/IPBan/SceneBanner.cs
@@ -53,9 +53,9 @@ namespace OpenSim.Region.CoreModules.Agent.IPBan
53 if (bans.Count > 0) 53 if (bans.Count > 0)
54 { 54 {
55 IClientIPEndpoint ipEndpoint; 55 IClientIPEndpoint ipEndpoint;
56 if (client.TryGet(out ipEndpoint)) 56 if (client.TryGet(out ipEndpoint) && ipEndpoint.RemoteEndPoint != null)
57 { 57 {
58 IPAddress end = ipEndpoint.EndPoint; 58 IPAddress end = ipEndpoint.RemoteEndPoint.Address;
59 59
60 try 60 try
61 { 61 {
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 87b76dc..4b846f5 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -813,8 +813,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
813 agentCircuit.Id0 = currentAgentCircuit.Id0; 813 agentCircuit.Id0 = currentAgentCircuit.Id0;
814 } 814 }
815 815
816 IClientIPEndpoint ipepClient;
817
818 uint newRegionX, newRegionY, oldRegionX, oldRegionY; 816 uint newRegionX, newRegionY, oldRegionX, oldRegionY;
819 Util.RegionHandleToRegionLoc(destinationHandle, out newRegionX, out newRegionY); 817 Util.RegionHandleToRegionLoc(destinationHandle, out newRegionX, out newRegionY);
820 Util.RegionHandleToRegionLoc(sourceRegion.RegionHandle, out oldRegionX, out oldRegionY); 818 Util.RegionHandleToRegionLoc(sourceRegion.RegionHandle, out oldRegionX, out oldRegionY);
@@ -833,13 +831,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
833 finalDestination.RegionName, newRegionX, newRegionY,newSizeX, newSizeY, sp.Name, Scene.Name); 831 finalDestination.RegionName, newRegionX, newRegionY,newSizeX, newSizeY, sp.Name, Scene.Name);
834 832
835 //sp.ControllingClient.SendTeleportProgress(teleportFlags, "Creating agent..."); 833 //sp.ControllingClient.SendTeleportProgress(teleportFlags, "Creating agent...");
836 #region IP Translation for NAT
837 // Uses ipepClient above
838 if (sp.ClientView.TryGet(out ipepClient))
839 {
840 endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address);
841 }
842 #endregion
843 agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath(); 834 agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath();
844 } 835 }
845 else 836 else
@@ -952,7 +943,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
952 agent.Position = agentCircuit.startpos; 943 agent.Position = agentCircuit.startpos;
953 SetCallbackURL(agent, sp.Scene.RegionInfo); 944 SetCallbackURL(agent, sp.Scene.RegionInfo);
954 945
955
956 // We will check for an abort before UpdateAgent since UpdateAgent will require an active viewer to 946 // We will check for an abort before UpdateAgent since UpdateAgent will require an active viewer to
957 // establish th econnection to the destination which makes it return true. 947 // establish th econnection to the destination which makes it return true.
958 if (m_entityTransferStateMachine.GetAgentTransferState(sp.UUID) == AgentTransferState.Aborting) 948 if (m_entityTransferStateMachine.GetAgentTransferState(sp.UUID) == AgentTransferState.Aborting)
@@ -1745,11 +1735,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
1745 1735
1746 if (m_eqModule != null) 1736 if (m_eqModule != null)
1747 { 1737 {
1748 #region IP Translation for NAT
1749 IClientIPEndpoint ipepClient;
1750 if (agent.ClientView.TryGet(out ipepClient))
1751 endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address);
1752
1753 m_log.DebugFormat("{0} {1} is sending {2} EnableSimulator for neighbour region {3}(loc=<{4},{5}>,siz=<{6},{7}>) " + 1738 m_log.DebugFormat("{0} {1} is sending {2} EnableSimulator for neighbour region {3}(loc=<{4},{5}>,siz=<{6},{7}>) " +
1754 "and EstablishAgentCommunication with seed cap {8}", LogHeader, 1739 "and EstablishAgentCommunication with seed cap {8}", LogHeader,
1755 source.RegionName, agent.Name, 1740 source.RegionName, agent.Name,
@@ -2281,6 +2266,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
2281 } 2266 }
2282 2267
2283 #endregion // NotFoundLocationCache class 2268 #endregion // NotFoundLocationCache class
2269 #region getregions
2284 private NotFoundLocationCache m_notFoundLocationCache = new NotFoundLocationCache(); 2270 private NotFoundLocationCache m_notFoundLocationCache = new NotFoundLocationCache();
2285 2271
2286 protected GridRegion GetRegionContainingWorldLocation(IGridService pGridService, UUID pScopeID, double px, double py) 2272 protected GridRegion GetRegionContainingWorldLocation(IGridService pGridService, UUID pScopeID, double px, double py)
@@ -2398,17 +2384,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
2398 2384
2399 if (m_eqModule != null) 2385 if (m_eqModule != null)
2400 { 2386 {
2401 #region IP Translation for NAT
2402 if(sp == null || sp.IsDeleted || sp.ClientView == null) // something bad already happened 2387 if(sp == null || sp.IsDeleted || sp.ClientView == null) // something bad already happened
2403 return; 2388 return;
2404 2389
2405 IClientIPEndpoint ipepClient;
2406 if (sp.ClientView.TryGet(out ipepClient))
2407 {
2408 endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address);
2409 }
2410 #endregion
2411
2412 m_log.DebugFormat("{0} {1} is sending {2} EnableSimulator for neighbour region {3}(loc=<{4},{5}>,siz=<{6},{7}>) " + 2390 m_log.DebugFormat("{0} {1} is sending {2} EnableSimulator for neighbour region {3}(loc=<{4},{5}>,siz=<{6},{7}>) " +
2413 "and EstablishAgentCommunication with seed cap {8}", LogHeader, 2391 "and EstablishAgentCommunication with seed cap {8}", LogHeader,
2414 scene.RegionInfo.RegionName, sp.Name, 2392 scene.RegionInfo.RegionName, sp.Name,
diff --git a/OpenSim/Region/CoreModules/Hypergrid/HGWorldMapModule.cs b/OpenSim/Region/CoreModules/Hypergrid/HGWorldMapModule.cs
index 5d66d34..8c44ee2 100644
--- a/OpenSim/Region/CoreModules/Hypergrid/HGWorldMapModule.cs
+++ b/OpenSim/Region/CoreModules/Hypergrid/HGWorldMapModule.cs
@@ -106,6 +106,8 @@ namespace OpenSim.Region.CoreModules.Hypergrid
106 if (!m_Enabled) 106 if (!m_Enabled)
107 return; 107 return;
108 108
109 base.RemoveRegion(scene);
110
109 scene.EventManager.OnClientClosed -= EventManager_OnClientClosed; 111 scene.EventManager.OnClientClosed -= EventManager_OnClientClosed;
110 } 112 }
111 113
diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
index ae5e175..57dc556 100644
--- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
+++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
@@ -415,6 +415,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
415 415
416 public void Close() 416 public void Close()
417 { 417 {
418 ThreadPool.Shutdown();
418 } 419 }
419 420
420 public string Name 421 public string Name
@@ -538,6 +539,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
538 { 539 {
539 Request = (HttpWebRequest)WebRequest.Create(Url); 540 Request = (HttpWebRequest)WebRequest.Create(Url);
540 Request.AllowAutoRedirect = false; 541 Request.AllowAutoRedirect = false;
542 Request.KeepAlive = false;
541 543
542 //This works around some buggy HTTP Servers like Lighttpd 544 //This works around some buggy HTTP Servers like Lighttpd
543 Request.ServicePoint.Expect100Continue = false; 545 Request.ServicePoint.Expect100Continue = false;
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
index 5dcf326..00c8279 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
@@ -215,6 +215,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
215 m_scene.EventManager.OnNewClient -= OnNewClient; 215 m_scene.EventManager.OnNewClient -= OnNewClient;
216 m_scene.EventManager.OnRegisterCaps -= OnRegisterCaps; 216 m_scene.EventManager.OnRegisterCaps -= OnRegisterCaps;
217 217
218 m_scene.UnregisterModuleInterface<IWorldMapModule>(this);
219
218 string regionimage = "regionImage" + m_scene.RegionInfo.RegionID.ToString(); 220 string regionimage = "regionImage" + m_scene.RegionInfo.RegionID.ToString();
219 regionimage = regionimage.Replace("-", ""); 221 regionimage = regionimage.Replace("-", "");
220 MainServer.Instance.RemoveLLSDHandler("/MAP/MapItems/" + m_scene.RegionInfo.RegionHandle.ToString(), 222 MainServer.Instance.RemoveLLSDHandler("/MAP/MapItems/" + m_scene.RegionInfo.RegionHandle.ToString(),
@@ -1148,7 +1150,12 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
1148 List<MapBlockRequestData> thisRunData = new List<MapBlockRequestData>(); 1150 List<MapBlockRequestData> thisRunData = new List<MapBlockRequestData>();
1149 while (true) 1151 while (true)
1150 { 1152 {
1151 m_mapBlockRequestEvent.WaitOne(); 1153 while(!m_mapBlockRequestEvent.WaitOne(4900))
1154 {
1155 if(m_scene == null)
1156 return;
1157 }
1158
1152 lock (m_mapBlockRequestEvent) 1159 lock (m_mapBlockRequestEvent)
1153 { 1160 {
1154 int total = 0; 1161 int total = 0;
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 474378d..55ccb0a 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -4687,7 +4687,10 @@ namespace OpenSim.Region.Framework.Scenes
4687 cAgent.agentCOF = COF; 4687 cAgent.agentCOF = COF;
4688 cAgent.ActiveGroupID = ControllingClient.ActiveGroupId; 4688 cAgent.ActiveGroupID = ControllingClient.ActiveGroupId;
4689 cAgent.ActiveGroupName = ControllingClient.ActiveGroupName; 4689 cAgent.ActiveGroupName = ControllingClient.ActiveGroupName;
4690 cAgent.ActiveGroupTitle = Grouptitle; 4690 if(Grouptitle == null)
4691 cAgent.ActiveGroupTitle = String.Empty;
4692 else
4693 cAgent.ActiveGroupTitle = Grouptitle;
4691 } 4694 }
4692 } 4695 }
4693 4696
diff --git a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
index 93406cb..5a9a5a0 100644
--- a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
+++ b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
@@ -550,7 +550,16 @@ namespace OpenSim.Region.Framework.Scenes
550 /// </summary> 550 /// </summary>
551 private void RecordMaterialAssetUuids(AssetBase materialAsset) 551 private void RecordMaterialAssetUuids(AssetBase materialAsset)
552 { 552 {
553 OSDMap mat = (OSDMap)OSDParser.DeserializeLLSDXml(materialAsset.Data); 553 OSDMap mat;
554 try
555 {
556 mat = (OSDMap)OSDParser.DeserializeLLSDXml(materialAsset.Data);
557 }
558 catch (Exception e)
559 {
560 m_log.WarnFormat("[Materials]: cannot decode material asset {0}: {1}", materialAsset.ID, e.Message);
561 return;
562 }
554 563
555 UUID normMap = mat["NormMap"].AsUUID(); 564 UUID normMap = mat["NormMap"].AsUUID();
556 if (normMap != UUID.Zero) 565 if (normMap != UUID.Zero)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs
index 6a39bb9..eb6455a 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs
@@ -51,7 +51,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
51 51
52 private static Thread cmdHandlerThread; 52 private static Thread cmdHandlerThread;
53 private static int cmdHandlerThreadCycleSleepms; 53 private static int cmdHandlerThreadCycleSleepms;
54 54 private static int numInstances;
55 /// <summary> 55 /// <summary>
56 /// Lock for reading/writing static components of AsyncCommandManager. 56 /// Lock for reading/writing static components of AsyncCommandManager.
57 /// </summary> 57 /// </summary>
@@ -172,18 +172,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
172 if (!m_XmlRequest.ContainsKey(m_ScriptEngine)) 172 if (!m_XmlRequest.ContainsKey(m_ScriptEngine))
173 m_XmlRequest[m_ScriptEngine] = new XmlRequest(this); 173 m_XmlRequest[m_ScriptEngine] = new XmlRequest(this);
174 174
175 StartThread(); 175 numInstances++;
176 } 176 if (cmdHandlerThread == null)
177 } 177 {
178 178 cmdHandlerThread = WorkManager.StartThread(
179 private static void StartThread()
180 {
181 if (cmdHandlerThread == null)
182 {
183 // Start the thread that will be doing the work
184 cmdHandlerThread
185 = WorkManager.StartThread(
186 CmdHandlerThreadLoop, "AsyncLSLCmdHandlerThread", ThreadPriority.Normal, true, true); 179 CmdHandlerThreadLoop, "AsyncLSLCmdHandlerThread", ThreadPriority.Normal, true, true);
180 }
187 } 181 }
188 } 182 }
189 183
@@ -197,20 +191,27 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
197 ~AsyncCommandManager() 191 ~AsyncCommandManager()
198 { 192 {
199 // Shut down thread 193 // Shut down thread
200// try 194 try
201// { 195 {
202// if (cmdHandlerThread != null) 196 lock (staticLock)
203// { 197 {
204// if (cmdHandlerThread.IsAlive == true) 198 numInstances--;
205// { 199 if(numInstances > 0)
206// cmdHandlerThread.Abort(); 200 return;
207// //cmdHandlerThread.Join(); 201 if (cmdHandlerThread != null)
208// } 202 {
209// } 203 if (cmdHandlerThread.IsAlive == true)
210// } 204 {
211// catch 205 cmdHandlerThread.Abort();
212// { 206 //cmdHandlerThread.Join();
213// } 207 cmdHandlerThread = null;
208 }
209 }
210 }
211 }
212 catch
213 {
214 }
214 } 215 }
215 216
216 /// <summary> 217 /// <summary>
@@ -240,24 +241,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
240 lock (staticLock) 241 lock (staticLock)
241 { 242 {
242 // Check HttpRequests 243 // Check HttpRequests
243 m_HttpRequest[m_ScriptEngines[0]].CheckHttpRequests(); 244 try { m_HttpRequest[m_ScriptEngines[0]].CheckHttpRequests(); } catch {}
244 245
245 // Check XMLRPCRequests 246 // Check XMLRPCRequests
246 m_XmlRequest[m_ScriptEngines[0]].CheckXMLRPCRequests(); 247 try { m_XmlRequest[m_ScriptEngines[0]].CheckXMLRPCRequests(); } catch {}
247 248
248 foreach (IScriptEngine s in m_ScriptEngines) 249 foreach (IScriptEngine s in m_ScriptEngines)
249 { 250 {
250 // Check Listeners 251 // Check Listeners
251 m_Listener[s].CheckListeners(); 252 try { m_Listener[s].CheckListeners(); } catch {}
253
252 254
253 // Check timers 255 // Check timers
254 m_Timer[s].CheckTimerEvents(); 256 try { m_Timer[s].CheckTimerEvents(); } catch {}
255 257
256 // Check Sensors 258 // Check Sensors
257 m_SensorRepeat[s].CheckSenseRepeaterEvents(); 259 try { m_SensorRepeat[s].CheckSenseRepeaterEvents(); } catch {}
258 260
259 // Check dataserver 261 // Check dataserver
260 m_Dataserver[s].ExpireRequests(); 262 try { m_Dataserver[s].ExpireRequests(); } catch {}
261 } 263 }
262 } 264 }
263 } 265 }
@@ -387,8 +389,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
387 } 389 }
388 } 390 }
389 391
390
391
392 public static Object[] GetSerializationData(IScriptEngine engine, UUID itemID) 392 public static Object[] GetSerializationData(IScriptEngine engine, UUID itemID)
393 { 393 {
394 List<Object> data = new List<Object>(); 394 List<Object> data = new List<Object>();
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 0ccc683..2e39033 100755
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -827,6 +827,9 @@ namespace OpenSim.Region.ScriptEngine.XEngine
827 if (m_ScriptEngines.Contains(this)) 827 if (m_ScriptEngines.Contains(this))
828 m_ScriptEngines.Remove(this); 828 m_ScriptEngines.Remove(this);
829 } 829 }
830
831 lock(m_Scripts)
832 m_ThreadPool.Shutdown();
830 } 833 }
831 834
832 public object DoBackup(object o) 835 public object DoBackup(object o)