From b440a9534d74489d9558fc9a91dde906a9e6ef83 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Thu, 4 Jun 2020 20:19:05 +0100 Subject: [PATCH] AgentCircuitManager: always remove possible old one on add --- OpenSim/Framework/AgentCircuitManager.cs | 1 + OpenSim/Region/Framework/Scenes/Scene.cs | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/OpenSim/Framework/AgentCircuitManager.cs b/OpenSim/Framework/AgentCircuitManager.cs index 86d202fc37..ba4a4988c8 100644 --- a/OpenSim/Framework/AgentCircuitManager.cs +++ b/OpenSim/Framework/AgentCircuitManager.cs @@ -89,6 +89,7 @@ namespace OpenSim.Framework /// public virtual void AddNewCircuit(uint circuitCode, AgentCircuitData agentData) { + RemoveCircuit(agentData.AgentID); // no duplications m_agentCircuits[circuitCode] = agentData; m_agentCircuitsByUUID[agentData.AgentID] = agentData; } diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 40f9cce73b..9ee2d9f922 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -4097,10 +4097,6 @@ namespace OpenSim.Region.Framework.Scenes if (cache != null) // cache.Remove(acd.firstname + " " + acd.lastname); cache.Remove(acd.AgentID); - - // Remove any preexisting circuit - we don't want duplicates - // This is a stab at preventing avatar "ghosting" - m_authenticateHandler.RemoveCircuit(acd.AgentID); } m_authenticateHandler.AddNewCircuit(acd.circuitcode, acd); @@ -4774,8 +4770,10 @@ Label_GroupsDone: // and since they don't get cleaned up they will stick // around until region restart. So, if there is no SP, // remove the client as well. - IClientAPI client = null; - if (m_clientManager.TryGetValue(agentID, out client)) + if (m_authenticateHandler != null) + m_authenticateHandler.RemoveCircuit(agentID); + + if (m_clientManager.TryGetValue(agentID, out IClientAPI client)) { m_clientManager.Remove(agentID); if (CapsModule != null)