diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index d336eda..55e7da4 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -4743,6 +4743,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
4743 | 4743 | ||
4744 | if (sp == null) | 4744 | if (sp == null) |
4745 | { | 4745 | { |
4746 | // If there is no scene presence, we may be handling a dead | ||
4747 | // client. These can keep an avatar from reentering a region | ||
4748 | // and since they don't get cleaned up they will stick | ||
4749 | // around until region restart. So, if there is no SP, | ||
4750 | // remove the client as well. | ||
4751 | IClientAPI client = null; | ||
4752 | if (m_clientManager.TryGetValue(agentID, out client)) | ||
4753 | { | ||
4754 | m_clientManager.Remove(agentID); | ||
4755 | m_log.DebugFormat( "[SCENE]: Dead client for agent ID {0} was cleaned up in {1}", agentID, Name); | ||
4756 | return true; | ||
4757 | } | ||
4746 | m_log.DebugFormat( | 4758 | m_log.DebugFormat( |
4747 | "[SCENE]: Called CloseClient() with agent ID {0} but no such presence is in {1}", | 4759 | "[SCENE]: Called CloseClient() with agent ID {0} but no such presence is in {1}", |
4748 | agentID, Name); | 4760 | agentID, Name); |