diff options
author | Teravus Ovares | 2008-02-21 20:22:25 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-02-21 20:22:25 +0000 |
commit | d4905812bc07efb819230d472beb2d75d91bb046 (patch) | |
tree | 95c4070633ecb91fc442e3e23842768705935551 /OpenSim/Region/ClientStack | |
parent | Update svn properties. (diff) | |
download | opensim-SC-d4905812bc07efb819230d472beb2d75d91bb046.zip opensim-SC-d4905812bc07efb819230d472beb2d75d91bb046.tar.gz opensim-SC-d4905812bc07efb819230d472beb2d75d91bb046.tar.bz2 opensim-SC-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.cs | 15 |
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) |