From 4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Tue, 12 Aug 2008 19:00:13 +0000 Subject: * 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 --- OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'OpenSim/Region/ClientStack/LindenUDP') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 2d0215f..b143f3e 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -454,17 +454,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// 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) -- cgit v1.1