aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
authorTeravus Ovares2008-02-21 20:22:25 +0000
committerTeravus Ovares2008-02-21 20:22:25 +0000
commitd4905812bc07efb819230d472beb2d75d91bb046 (patch)
tree95c4070633ecb91fc442e3e23842768705935551 /OpenSim/Region/ClientStack
parentUpdate svn properties. (diff)
downloadopensim-SC_OLD-d4905812bc07efb819230d472beb2d75d91bb046.zip
opensim-SC_OLD-d4905812bc07efb819230d472beb2d75d91bb046.tar.gz
opensim-SC_OLD-d4905812bc07efb819230d472beb2d75d91bb046.tar.bz2
opensim-SC_OLD-d4905812bc07efb819230d472beb2d75d91bb046.tar.xz
* Fixed an issue where the client thread was aborted before the UDP server sends a message back to ClientView to close it a second time. (yes we call close twice because there are times when the client closes with a logout and disconnects immediately which causes the UDP server to send a close request to the client thread)
* This update might make things better, it might expose another issue.
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r--OpenSim/Region/ClientStack/ClientView.cs15
1 files changed, 11 insertions, 4 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs
index 848a08d..1440d6c 100644
--- a/OpenSim/Region/ClientStack/ClientView.cs
+++ b/OpenSim/Region/ClientStack/ClientView.cs
@@ -238,7 +238,7 @@ namespace OpenSim.Region.ClientStack
238 238
239 # region Client Methods 239 # region Client Methods
240 240
241 private void CloseCleanup() 241 private void CloseCleanup(bool ShutdownCircult)
242 { 242 {
243 m_scene.RemoveClient(AgentId); 243 m_scene.RemoveClient(AgentId);
244 244
@@ -268,8 +268,15 @@ namespace OpenSim.Region.ClientStack
268 // We can't reach into other scenes and close the connection 268 // We can't reach into other scenes and close the connection
269 // We need to do this over grid communications 269 // We need to do this over grid communications
270 //m_scene.CloseAllAgents(CircuitCode); 270 //m_scene.CloseAllAgents(CircuitCode);
271 GC.Collect(); 271
272 m_clientThread.Abort(); 272 // If we're not shutting down the circuit, then this is the last time we'll go here.
273 // If we are shutting down the circuit, the UDP Server will come back here with
274 // ShutDownCircuit = false
275 if (!(ShutdownCircult))
276 {
277 GC.Collect();
278 m_clientThread.Abort();
279 }
273 } 280 }
274 281
275 /// <summary> 282 /// <summary>
@@ -286,7 +293,7 @@ namespace OpenSim.Region.ClientStack
286 if (ShutdownCircult) 293 if (ShutdownCircult)
287 OnConnectionClosed(this); 294 OnConnectionClosed(this);
288 295
289 CloseCleanup(); 296 CloseCleanup(ShutdownCircult);
290 } 297 }
291 298
292 public void Kick(string message) 299 public void Kick(string message)