aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs32
1 files changed, 16 insertions, 16 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 4f11326..22b577b 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -810,11 +810,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
810 return; 810 return;
811 } 811 }
812 812
813 // We need to set this here to avoid an unlikely race condition when teleporting to a neighbour simulator,
814 // where that neighbour simulator could otherwise request a child agent create on the source which then
815 // closes our existing agent which is still signalled as root.
816 sp.IsChildAgent = true;
817
818 // A common teleport failure occurs when we can send CreateAgent to the 813 // A common teleport failure occurs when we can send CreateAgent to the
819 // destination region but the viewer cannot establish the connection (e.g. due to network issues between 814 // destination region but the viewer cannot establish the connection (e.g. due to network issues between
820 // the viewer and the destination). In this case, UpdateAgent timesout after 10 seconds, although then 815 // the viewer and the destination). In this case, UpdateAgent timesout after 10 seconds, although then
@@ -840,17 +835,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
840 return; 835 return;
841 } 836 }
842 837
843 // OK, send TPFinish to the client, so that it starts the process of contacting the destination region
844 if (m_eqModule != null)
845 {
846 m_eqModule.TeleportFinishEvent(destinationHandle, 13, endPoint, 0, teleportFlags, capsPath, sp.UUID);
847 }
848 else
849 {
850 sp.ControllingClient.SendRegionTeleport(destinationHandle, 13, endPoint, 4,
851 teleportFlags, capsPath);
852 }
853
854 if (m_entityTransferStateMachine.GetAgentTransferState(sp.UUID) == AgentTransferState.Cancelling) 838 if (m_entityTransferStateMachine.GetAgentTransferState(sp.UUID) == AgentTransferState.Cancelling)
855 { 839 {
856 m_interRegionTeleportCancels.Value++; 840 m_interRegionTeleportCancels.Value++;
@@ -868,6 +852,22 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
868 "[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} from {1} to {2}", 852 "[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} from {1} to {2}",
869 capsPath, sp.Scene.RegionInfo.RegionName, sp.Name); 853 capsPath, sp.Scene.RegionInfo.RegionName, sp.Name);
870 854
855 // We need to set this here to avoid an unlikely race condition when teleporting to a neighbour simulator,
856 // where that neighbour simulator could otherwise request a child agent create on the source which then
857 // closes our existing agent which is still signalled as root.
858 sp.IsChildAgent = true;
859
860 // OK, send TPFinish to the client, so that it starts the process of contacting the destination region
861 if (m_eqModule != null)
862 {
863 m_eqModule.TeleportFinishEvent(destinationHandle, 13, endPoint, 0, teleportFlags, capsPath, sp.UUID);
864 }
865 else
866 {
867 sp.ControllingClient.SendRegionTeleport(destinationHandle, 13, endPoint, 4,
868 teleportFlags, capsPath);
869 }
870
871 // TeleportFinish makes the client send CompleteMovementIntoRegion (at the destination), which 871 // TeleportFinish makes the client send CompleteMovementIntoRegion (at the destination), which
872 // trigers a whole shebang of things there, including MakeRoot. So let's wait for confirmation 872 // trigers a whole shebang of things there, including MakeRoot. So let's wait for confirmation
873 // that the client contacted the destination before we close things here. 873 // that the client contacted the destination before we close things here.