diff options
author | Justin Clark-Casey (justincc) | 2013-05-16 16:37:21 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2013-05-16 16:37:21 +0100 |
commit | bd31821792a940709ff1355a91b9b60302cc1a17 (patch) | |
tree | 6ca9b831f6962e01ecec24d5d1cadb66a5569569 | |
parent | fall back to using a display mesh for physics proxy if no physics_mesh entry ... (diff) | |
download | opensim-SC_OLD-bd31821792a940709ff1355a91b9b60302cc1a17.zip opensim-SC_OLD-bd31821792a940709ff1355a91b9b60302cc1a17.tar.gz opensim-SC_OLD-bd31821792a940709ff1355a91b9b60302cc1a17.tar.bz2 opensim-SC_OLD-bd31821792a940709ff1355a91b9b60302cc1a17.tar.xz |
On logout, send close child agent requests to neighbours asynchronously, so user is not prevented from relogging if many neighbours are present but not responsive.
The symptom here is that previous user connections are still present but are labelled active == false
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 6bbcbd7..50bea6f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -3435,16 +3435,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
3435 | if (closeChildAgents && CapsModule != null) | 3435 | if (closeChildAgents && CapsModule != null) |
3436 | CapsModule.RemoveCaps(agentID); | 3436 | CapsModule.RemoveCaps(agentID); |
3437 | 3437 | ||
3438 | // // REFACTORING PROBLEM -- well not really a problem, but just to point out that whatever | ||
3439 | // // this method is doing is HORRIBLE!!! | ||
3440 | // Commented pending deletion since this method no longer appears to do anything at all | ||
3441 | // avatar.Scene.NeedSceneCacheClear(avatar.UUID); | ||
3442 | |||
3443 | if (closeChildAgents && !isChildAgent) | 3438 | if (closeChildAgents && !isChildAgent) |
3444 | { | 3439 | { |
3445 | List<ulong> regions = avatar.KnownRegionHandles; | 3440 | List<ulong> regions = avatar.KnownRegionHandles; |
3446 | regions.Remove(RegionInfo.RegionHandle); | 3441 | regions.Remove(RegionInfo.RegionHandle); |
3447 | m_sceneGridService.SendCloseChildAgentConnections(agentID, regions); | 3442 | |
3443 | // We must do this asynchronously so that a logout isn't held up where there are many present but unresponsive neighbours. | ||
3444 | Util.FireAndForget(delegate { m_sceneGridService.SendCloseChildAgentConnections(agentID, regions); }); | ||
3448 | } | 3445 | } |
3449 | 3446 | ||
3450 | m_eventManager.TriggerClientClosed(agentID, this); | 3447 | m_eventManager.TriggerClientClosed(agentID, this); |