aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-08-15 14:41:00 +0100
committerJustin Clark-Casey (justincc)2013-08-15 14:41:00 +0100
commit3ddb7438d746b3efbe0cbedcb4ba2e18a0db51e2 (patch)
treeb3820f6f2989ee03746d4e3b60ddf3eea52fb1e1 /OpenSim
parentRely on the Scene.IncomingCloseAgent() check as to whether the connection sho... (diff)
downloadopensim-SC_OLD-3ddb7438d746b3efbe0cbedcb4ba2e18a0db51e2.zip
opensim-SC_OLD-3ddb7438d746b3efbe0cbedcb4ba2e18a0db51e2.tar.gz
opensim-SC_OLD-3ddb7438d746b3efbe0cbedcb4ba2e18a0db51e2.tar.bz2
opensim-SC_OLD-3ddb7438d746b3efbe0cbedcb4ba2e18a0db51e2.tar.xz
Move DoNotCloseAfterTeleport flag reset before UpdateAgent in V2 to avoid a low probability where the destination re-establishing the child connection before the flag was reset
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs8
1 files changed, 6 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 5f85eb0..4011422 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -1029,6 +1029,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
1029 agent.SenderWantsToWaitForRoot = true; 1029 agent.SenderWantsToWaitForRoot = true;
1030 //SetCallbackURL(agent, sp.Scene.RegionInfo); 1030 //SetCallbackURL(agent, sp.Scene.RegionInfo);
1031 1031
1032 // Reset the do not close flag. This must be done before the destination opens child connections (here
1033 // triggered by UpdateAgent) to avoid race conditions. However, we also want to reset it as late as possible
1034 // to avoid a situation where an unexpectedly early call to Scene.NewUserConnection() wrongly results
1035 // in no close.
1036 sp.DoNotCloseAfterTeleport = false;
1037
1032 // Send the Update. If this returns true, we know the client has contacted the destination 1038 // Send the Update. If this returns true, we know the client has contacted the destination
1033 // via CompleteMovementIntoRegion, so we can let go. 1039 // via CompleteMovementIntoRegion, so we can let go.
1034 // If it returns false, something went wrong, and we need to abort. 1040 // If it returns false, something went wrong, and we need to abort.
@@ -1075,8 +1081,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
1075 // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone 1081 // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone
1076 if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) 1082 if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg))
1077 { 1083 {
1078 sp.DoNotCloseAfterTeleport = false;
1079
1080 // RED ALERT!!!! 1084 // RED ALERT!!!!
1081 // PLEASE DO NOT DECREASE THIS WAIT TIME UNDER ANY CIRCUMSTANCES. 1085 // PLEASE DO NOT DECREASE THIS WAIT TIME UNDER ANY CIRCUMSTANCES.
1082 // THE VIEWERS SEEM TO NEED SOME TIME AFTER RECEIVING MoveAgentIntoRegion 1086 // THE VIEWERS SEEM TO NEED SOME TIME AFTER RECEIVING MoveAgentIntoRegion