diff options
author | Justin Clark-Casey (justincc) | 2013-08-15 14:41:00 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2013-08-15 14:41:00 +0100 |
commit | 3ddb7438d746b3efbe0cbedcb4ba2e18a0db51e2 (patch) | |
tree | b3820f6f2989ee03746d4e3b60ddf3eea52fb1e1 /OpenSim/Region | |
parent | Rely on the Scene.IncomingCloseAgent() check as to whether the connection sho... (diff) | |
download | opensim-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/Region')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 8 |
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 |