On logout, delay the removal of AgentCircuitData until the very end, because that data structure contains important information about the agent that may be needed by modules.

0.8.0.3
Diva Canto 2014-07-04 14:36:11 -07:00 committed by Justin Clark-Casey
parent 3730163e5d
commit 62e9cdd72a
1 changed files with 3 additions and 5 deletions

View File

@ -3219,10 +3219,6 @@ namespace OpenSim.Region.Framework.Scenes
return; return;
} }
else
{
m_authenticateHandler.RemoveCircuit(agentID);
}
// TODO: Can we now remove this lock? // TODO: Can we now remove this lock?
lock (acd) lock (acd)
@ -3238,6 +3234,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
m_log.ErrorFormat( m_log.ErrorFormat(
"[SCENE]: Called RemoveClient() with agent ID {0} but no such presence is in the scene.", agentID); "[SCENE]: Called RemoveClient() with agent ID {0} but no such presence is in the scene.", agentID);
m_authenticateHandler.RemoveCircuit(agentID);
return; return;
} }
@ -3315,6 +3312,7 @@ namespace OpenSim.Region.Framework.Scenes
// Always clean these structures up so that any failure above doesn't cause them to remain in the // Always clean these structures up so that any failure above doesn't cause them to remain in the
// scene with possibly bad effects (e.g. continually timing out on unacked packets and triggering // scene with possibly bad effects (e.g. continually timing out on unacked packets and triggering
// the same cleanup exception continually. // the same cleanup exception continually.
m_authenticateHandler.RemoveCircuit(agentID);
m_sceneGraph.RemoveScenePresence(agentID); m_sceneGraph.RemoveScenePresence(agentID);
m_clientManager.Remove(agentID); m_clientManager.Remove(agentID);