aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Scene.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs31
1 files changed, 20 insertions, 11 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 4fa4a7c..56bdc63 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -3862,21 +3862,30 @@ namespace OpenSim.Region.Framework.Scenes
3862 // In the case where, for example, an A B C D region layout, an avatar may 3862 // In the case where, for example, an A B C D region layout, an avatar may
3863 // teleport from A -> D, but then -> C before A has asked B to close its old child agent. When C 3863 // teleport from A -> D, but then -> C before A has asked B to close its old child agent. When C
3864 // renews the lease on the child agent at B, we must make sure that the close from A does not succeed. 3864 // renews the lease on the child agent at B, we must make sure that the close from A does not succeed.
3865 if (!acd.ChildrenCapSeeds.ContainsKey(RegionInfo.RegionHandle)) 3865 //
3866 { 3866 // XXX: In the end, this should not be necessary if child agents are closed without delay on
3867 m_log.DebugFormat( 3867 // teleport, since realistically, the close request should always be processed before any other
3868 "[SCENE]: Setting DoNotCloseAfterTeleport for child scene presence {0} in {1} because source will attempt close.", 3868 // region tried to re-establish a child agent. This is much simpler since the logic below is
3869 sp.Name, Name); 3869 // vulnerable to an issue when a viewer quits a region without sending a proper logout but then
3870 // re-establishes the connection on a relogin. This could wrongly set the DoNotCloseAfterTeleport
3871 // flag when no teleport had taken place (and hence no close was going to come).
3872// if (!acd.ChildrenCapSeeds.ContainsKey(RegionInfo.RegionHandle))
3873// {
3874// m_log.DebugFormat(
3875// "[SCENE]: Setting DoNotCloseAfterTeleport for child scene presence {0} in {1} because source will attempt close.",
3876// sp.Name, Name);
3877//
3878// sp.DoNotCloseAfterTeleport = true;
3879// }
3880// else if (EntityTransferModule.IsInTransit(sp.UUID))
3870 3881
3871 sp.DoNotCloseAfterTeleport = true; 3882 if (EntityTransferModule.IsInTransit(sp.UUID))
3872 }
3873 else if (EntityTransferModule.IsInTransit(sp.UUID))
3874 { 3883 {
3884 sp.DoNotCloseAfterTeleport = true;
3885
3875 m_log.DebugFormat( 3886 m_log.DebugFormat(
3876 "[SCENE]: Setting DoNotCloseAfterTeleport for child scene presence {0} in {1} because this region will attempt previous end-of-teleport close.", 3887 "[SCENE]: Set DoNotCloseAfterTeleport for child scene presence {0} in {1} because this region will attempt end-of-teleport close from a previous close.",
3877 sp.Name, Name); 3888 sp.Name, Name);
3878
3879 sp.DoNotCloseAfterTeleport = true;
3880 } 3889 }
3881 } 3890 }
3882 } 3891 }