* 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 future
This commit is contained in:
Justin Clarke Casey
2008-08-12 19:00:13 +00:00
parent 8ea92c0669
commit 4e555b87f3
4 changed files with 30 additions and 17 deletions

View File

@@ -454,17 +454,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <param name="shutdownCircuit"></param>
public void Close(bool shutdownCircuit)
{
// Pull Client out of Region
m_log.Info("[CLIENT]: Close has been called");
m_log.DebugFormat(
"[CLIENT]: Close has been called with shutdownCircuit = {0} on scene {1}",
shutdownCircuit, m_scene.RegionInfo.RegionName);
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)
{
OnConnectionClosed(this);
}
CloseCleanup(shutdownCircuit);
else
{
CloseCleanup(shutdownCircuit);
}
}
public void Kick(string message)