aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs32
1 files changed, 17 insertions, 15 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index b0c0b1d..4f11326 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -697,6 +697,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
697 ulong destinationHandle = finalDestination.RegionHandle; 697 ulong destinationHandle = finalDestination.RegionHandle;
698 AgentCircuitData currentAgentCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode); 698 AgentCircuitData currentAgentCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode);
699 699
700 m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Using TP V1");
700 // Let's create an agent there if one doesn't exist yet. 701 // Let's create an agent there if one doesn't exist yet.
701 // NOTE: logout will always be false for a non-HG teleport. 702 // NOTE: logout will always be false for a non-HG teleport.
702 bool logout = false; 703 bool logout = false;
@@ -736,7 +737,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
736 737
737 // Past this point we have to attempt clean up if the teleport fails, so update transfer state. 738 // Past this point we have to attempt clean up if the teleport fails, so update transfer state.
738 m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.Transferring); 739 m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.Transferring);
739 740
741 // OK, it got this agent. Let's close some child agents
742 sp.CloseChildAgents(newRegionX, newRegionY);
743
740 IClientIPEndpoint ipepClient; 744 IClientIPEndpoint ipepClient;
741 string capsPath = String.Empty; 745 string capsPath = String.Empty;
742 if (NeedsNewAgent(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY)) 746 if (NeedsNewAgent(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY))
@@ -811,17 +815,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
811 // closes our existing agent which is still signalled as root. 815 // closes our existing agent which is still signalled as root.
812 sp.IsChildAgent = true; 816 sp.IsChildAgent = true;
813 817
814 // New protocol: send TP Finish directly, without prior ES or EAC. That's what happens in the Linden grid
815 if (m_eqModule != null)
816 {
817 m_eqModule.TeleportFinishEvent(destinationHandle, 13, endPoint, 0, teleportFlags, capsPath, sp.UUID);
818 }
819 else
820 {
821 sp.ControllingClient.SendRegionTeleport(destinationHandle, 13, endPoint, 4,
822 teleportFlags, capsPath);
823 }
824
825 // A common teleport failure occurs when we can send CreateAgent to the 818 // A common teleport failure occurs when we can send CreateAgent to the
826 // destination region but the viewer cannot establish the connection (e.g. due to network issues between 819 // destination region but the viewer cannot establish the connection (e.g. due to network issues between
827 // the viewer and the destination). In this case, UpdateAgent timesout after 10 seconds, although then 820 // the viewer and the destination). In this case, UpdateAgent timesout after 10 seconds, although then
@@ -847,6 +840,17 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
847 return; 840 return;
848 } 841 }
849 842
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
850 if (m_entityTransferStateMachine.GetAgentTransferState(sp.UUID) == AgentTransferState.Cancelling) 854 if (m_entityTransferStateMachine.GetAgentTransferState(sp.UUID) == AgentTransferState.Cancelling)
851 { 855 {
852 m_interRegionTeleportCancels.Value++; 856 m_interRegionTeleportCancels.Value++;
@@ -908,9 +912,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
908 // Now let's make it officially a child agent 912 // Now let's make it officially a child agent
909 sp.MakeChildAgent(); 913 sp.MakeChildAgent();
910 914
911 // OK, it got this agent. Let's close some child agents
912 sp.CloseChildAgents(newRegionX, newRegionY);
913
914 // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone 915 // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone
915 916
916 if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) 917 if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg))
@@ -1063,6 +1064,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
1063 /// <param name='finalDestination'></param> 1064 /// <param name='finalDestination'></param>
1064 protected virtual void CleanupFailedInterRegionTeleport(ScenePresence sp, string auth_token, GridRegion finalDestination) 1065 protected virtual void CleanupFailedInterRegionTeleport(ScenePresence sp, string auth_token, GridRegion finalDestination)
1065 { 1066 {
1067 m_log.DebugFormat("[ZZZ]: FAIL!");
1066 m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.CleaningUp); 1068 m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.CleaningUp);
1067 1069
1068 if (sp.IsChildAgent) // We had set it to child before attempted TP (V1) 1070 if (sp.IsChildAgent) // We had set it to child before attempted TP (V1)