* Stop warnings about non existent scene presences/entities being removed on client log off
* This is being done by preventing close from being called twice on child agent closure (nres which would have been thrown are being swallowed). * However, it should be possible to do much better cleanup on this code in the future0.6.0-stable
parent
8ea92c0669
commit
4e555b87f3
|
@ -86,7 +86,9 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.ErrorFormat("[USER CACHE]: Tried to remove the profile of user {0}, but this was not in the scene", userId);
|
m_log.WarnFormat(
|
||||||
|
"[USER CACHE]: Tried to remove the profile of user {0}, but this was not in the scene", userId);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -454,18 +454,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
/// <param name="shutdownCircuit"></param>
|
/// <param name="shutdownCircuit"></param>
|
||||||
public void Close(bool shutdownCircuit)
|
public void Close(bool shutdownCircuit)
|
||||||
{
|
{
|
||||||
// Pull Client out of Region
|
m_log.DebugFormat(
|
||||||
m_log.Info("[CLIENT]: Close has been called");
|
"[CLIENT]: Close has been called with shutdownCircuit = {0} on scene {1}",
|
||||||
|
shutdownCircuit, m_scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
m_PacketHandler.Flush();
|
m_PacketHandler.Flush();
|
||||||
|
|
||||||
//raiseevent on the packet server to Shutdown the circuit
|
// raise an event on the packet server to Shutdown the circuit
|
||||||
|
// Now, if we raise the event then the packet server will call this method itself, so don't try cleanup
|
||||||
|
// here otherwise we'll end up calling it twice.
|
||||||
|
// FIXME: In truth, I might be wrong but this whole business of calling this method twice (with different args) looks
|
||||||
|
// horribly tangly. Hopefully it should be possible to greatly simplify it.
|
||||||
if (shutdownCircuit)
|
if (shutdownCircuit)
|
||||||
{
|
{
|
||||||
OnConnectionClosed(this);
|
OnConnectionClosed(this);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CloseCleanup(shutdownCircuit);
|
CloseCleanup(shutdownCircuit);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Kick(string message)
|
public void Kick(string message)
|
||||||
{
|
{
|
||||||
|
|
|
@ -584,26 +584,26 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
lock (Entities)
|
lock (Entities)
|
||||||
{
|
{
|
||||||
if (Entities.Remove(agentID))
|
if (!Entities.Remove(agentID))
|
||||||
{
|
|
||||||
//m_log.InfoFormat("[SCENE] Removed scene presence {0} from entities list", agentID);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene Entities list", agentID);
|
m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene Entities list", agentID);
|
||||||
}
|
}
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// m_log.InfoFormat("[SCENE] Removed scene presence {0} from entities list", agentID);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
lock (ScenePresences)
|
lock (ScenePresences)
|
||||||
{
|
{
|
||||||
if (ScenePresences.Remove(agentID))
|
if (!ScenePresences.Remove(agentID))
|
||||||
{
|
|
||||||
//m_log.InfoFormat("[SCENE] Removed scene presence {0}", agentID);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene ScenePresences list", agentID);
|
m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene ScenePresences list", agentID);
|
||||||
}
|
}
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// m_log.InfoFormat("[SCENE] Removed scene presence {0} from scene presences list", agentID);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2259,6 +2259,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
childagentYN = avatar.IsChildAgent;
|
childagentYN = avatar.IsChildAgent;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
|
@ -2295,6 +2296,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
// We don't know which count to remove it from
|
// We don't know which count to remove it from
|
||||||
// Avatar is already disposed :/
|
// Avatar is already disposed :/
|
||||||
}
|
}
|
||||||
|
|
||||||
m_eventManager.TriggerOnRemovePresence(agentID);
|
m_eventManager.TriggerOnRemovePresence(agentID);
|
||||||
Broadcast(delegate(IClientAPI client)
|
Broadcast(delegate(IClientAPI client)
|
||||||
{
|
{
|
||||||
|
@ -2631,6 +2633,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
m_innerScene.removeUserCount(true);
|
m_innerScene.removeUserCount(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tell a single agent to disconnect from the region.
|
// Tell a single agent to disconnect from the region.
|
||||||
presence.ControllingClient.SendShutdownConnectionNotice();
|
presence.ControllingClient.SendShutdownConnectionNotice();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue