From 99bce9d87723af1958a76cf8ac5e765ca804549d Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 9 Aug 2013 00:24:22 +0100 Subject: Fix an issue with an A->C->B->A teleport where these regions are in a row (A,B,C) where the A root agent is still closed, terminating the connection. This was occuring because teleport to B did not set DoNotCloseAfterTeleport on A as it was a neighbour (where it isn't set to avoid the issue where the source region doesn't send Close() to regions that are still neighbours (hence not resetting DoNotCloseAfterTeleport). Fix here is to still set DoNotCloseAfterTeleport if scene presence is still registered as in transit from A --- OpenSim/Region/Framework/Scenes/Scene.cs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'OpenSim/Region/Framework/Scenes/Scene.cs') diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 5f10869..a3ea7d9 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -3699,6 +3699,14 @@ namespace OpenSim.Region.Framework.Scenes sp.DoNotCloseAfterTeleport = true; } + else if (EntityTransferModule.IsInTransit(sp.UUID)) + { + m_log.DebugFormat( + "[SCENE]: Setting DoNotCloseAfterTeleport for child scene presence {0} in {1} because this region will attempt previous end-of-teleport close.", + sp.Name, Name); + + sp.DoNotCloseAfterTeleport = true; + } } } -- cgit v1.1