When CloseAgnt is called with an agent id that doesn't have a presence, check for stray clients and clean them up instead of failing.

avinationmerge
Melanie Thielker 2014-09-13 16:39:56 +02:00
parent 42b2248960
commit 8ab5f2ce84
1 changed files with 12 additions and 0 deletions

View File

@ -4743,6 +4743,18 @@ namespace OpenSim.Region.Framework.Scenes
if (sp == null) if (sp == null)
{ {
// If there is no scene presence, we may be handling a dead
// client. These can keep an avatar from reentering a region
// 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))
{
m_clientManager.Remove(agentID);
m_log.DebugFormat( "[SCENE]: Dead client for agent ID {0} was cleaned up in {1}", agentID, Name);
return true;
}
m_log.DebugFormat( m_log.DebugFormat(
"[SCENE]: Called CloseClient() with agent ID {0} but no such presence is in {1}", "[SCENE]: Called CloseClient() with agent ID {0} but no such presence is in {1}",
agentID, Name); agentID, Name);