aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-05-16 16:37:21 +0100
committerJustin Clark-Casey (justincc)2013-05-16 16:37:21 +0100
commitbd31821792a940709ff1355a91b9b60302cc1a17 (patch)
tree6ca9b831f6962e01ecec24d5d1cadb66a5569569
parentfall back to using a display mesh for physics proxy if no physics_mesh entry ... (diff)
downloadopensim-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.cs9
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);