aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs')
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs58
1 files changed, 15 insertions, 43 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 485e05a..283182c 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -197,9 +197,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
197 sp.ControllingClient.SendTeleportFailed("Problem at destination"); 197 sp.ControllingClient.SendTeleportFailed("Problem at destination");
198 return; 198 return;
199 } 199 }
200 200 m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Final destination is x={0} y={1} {2}@{3}",
201 m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Final destination is x={0} y={1} uuid={2}", 201 finalDestination.RegionLocX / Constants.RegionSize, finalDestination.RegionLocY / Constants.RegionSize, finalDestination.RegionID, finalDestination.ServerURI);
202 finalDestination.RegionLocX / Constants.RegionSize, finalDestination.RegionLocY / Constants.RegionSize, finalDestination.RegionID);
203 202
204 // Check that these are not the same coordinates 203 // Check that these are not the same coordinates
205 if (finalDestination.RegionLocX == sp.Scene.RegionInfo.RegionLocX && 204 if (finalDestination.RegionLocX == sp.Scene.RegionInfo.RegionLocX &&
@@ -255,8 +254,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
255 } 254 }
256 255
257 m_log.DebugFormat( 256 m_log.DebugFormat(
258 "[ENTITY TRANSFER MODULE]: Request Teleport to {0}:{1}:{2}/{3}", 257 "[ENTITY TRANSFER MODULE]: Request Teleport to {0} ({1}) {2}/{3}",
259 reg.ExternalHostName, reg.HttpPort, finalDestination.RegionName, position); 258 reg.ServerURI, finalDestination.ServerURI, finalDestination.RegionName, position);
260 259
261 uint newRegionX = (uint)(reg.RegionHandle >> 40); 260 uint newRegionX = (uint)(reg.RegionHandle >> 40);
262 uint newRegionY = (((uint)(reg.RegionHandle)) >> 8); 261 uint newRegionY = (((uint)(reg.RegionHandle)) >> 8);
@@ -328,43 +327,21 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
328 327
329 // OK, it got this agent. Let's close some child agents 328 // OK, it got this agent. Let's close some child agents
330 sp.CloseChildAgents(newRegionX, newRegionY); 329 sp.CloseChildAgents(newRegionX, newRegionY);
331 330 IClientIPEndpoint ipepClient;
332 if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) 331 if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY))
333 { 332 {
334 //sp.ControllingClient.SendTeleportProgress(teleportFlags, "Creating agent..."); 333 //sp.ControllingClient.SendTeleportProgress(teleportFlags, "Creating agent...");
335
336 #region IP Translation for NAT 334 #region IP Translation for NAT
337 IClientIPEndpoint ipepClient; 335 // Uses ipepClient above
338 if (sp.ClientView.TryGet(out ipepClient)) 336 if (sp.ClientView.TryGet(out ipepClient))
339 { 337 {
340 capsPath 338 endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address);
341 = "http://"
342 + NetworkUtil.GetHostFor(ipepClient.EndPoint, finalDestination.ExternalHostName)
343 + ":"
344 + finalDestination.HttpPort
345 + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath);
346 }
347 else
348 {
349 capsPath
350 = "http://"
351 + finalDestination.ExternalHostName
352 + ":"
353 + finalDestination.HttpPort
354 + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath);
355 } 339 }
356 #endregion 340 #endregion
341 capsPath = finalDestination.ServerURI + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath);
357 342
358 if (eq != null) 343 if (eq != null)
359 { 344 {
360 #region IP Translation for NAT
361 // Uses ipepClient above
362 if (sp.ClientView.TryGet(out ipepClient))
363 {
364 endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address);
365 }
366 #endregion
367
368 eq.EnableSimulator(destinationHandle, endPoint, sp.UUID); 345 eq.EnableSimulator(destinationHandle, endPoint, sp.UUID);
369 346
370 // ES makes the client send a UseCircuitCode message to the destination, 347 // ES makes the client send a UseCircuitCode message to the destination,
@@ -383,8 +360,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
383 else 360 else
384 { 361 {
385 agentCircuit.CapsPath = sp.Scene.CapsModule.GetChildSeed(sp.UUID, reg.RegionHandle); 362 agentCircuit.CapsPath = sp.Scene.CapsModule.GetChildSeed(sp.UUID, reg.RegionHandle);
386 capsPath = "http://" + finalDestination.ExternalHostName + ":" + finalDestination.HttpPort 363 capsPath = finalDestination.ServerURI + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath);
387 + "/CAPS/" + agentCircuit.CapsPath + "0000/";
388 } 364 }
389 365
390 // Expect avatar crossing is a heavy-duty function at the destination. 366 // Expect avatar crossing is a heavy-duty function at the destination.
@@ -516,8 +492,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
516 492
517 protected virtual void SetCallbackURL(AgentData agent, RegionInfo region) 493 protected virtual void SetCallbackURL(AgentData agent, RegionInfo region)
518 { 494 {
519 agent.CallbackURI = "http://" + region.ExternalHostName + ":" + region.HttpPort + 495 agent.CallbackURI = region.ServerURI + "agent/" + agent.AgentID.ToString() + "/" + region.RegionID.ToString() + "/release/";
520 "/agent/" + agent.AgentID.ToString() + "/" + region.RegionID.ToString() + "/release/"; 496 m_log.Debug("Set callback URL to " + agent.CallbackURI);
521 497
522 } 498 }
523 499
@@ -843,8 +819,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
843 cAgent.Position = pos; 819 cAgent.Position = pos;
844 if (isFlying) 820 if (isFlying)
845 cAgent.ControlFlags |= (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY; 821 cAgent.ControlFlags |= (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY;
846 cAgent.CallbackURI = "http://" + m_scene.RegionInfo.ExternalHostName + ":" + m_scene.RegionInfo.HttpPort + 822 cAgent.CallbackURI = m_scene.RegionInfo.ServerURI +
847 "/agent/" + agent.UUID.ToString() + "/" + m_scene.RegionInfo.RegionID.ToString() + "/release/"; 823 "agent/" + agent.UUID.ToString() + "/" + m_scene.RegionInfo.RegionID.ToString() + "/release/";
848 824
849 if (!m_scene.SimulationService.UpdateAgent(neighbourRegion, cAgent)) 825 if (!m_scene.SimulationService.UpdateAgent(neighbourRegion, cAgent))
850 { 826 {
@@ -869,10 +845,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
869 neighbourRegion.RegionHandle); 845 neighbourRegion.RegionHandle);
870 return agent; 846 return agent;
871 } 847 }
872 // TODO Should construct this behind a method 848 string capsPath = neighbourRegion.ServerURI + CapsUtil.GetCapsSeedPath(agentcaps);
873 string capsPath =
874 "http://" + neighbourRegion.ExternalHostName + ":" + neighbourRegion.HttpPort
875 + "/CAPS/" + agentcaps /*circuitdata.CapsPath*/ + "0000/";
876 849
877 m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, agent.UUID); 850 m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, agent.UUID);
878 851
@@ -1191,8 +1164,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
1191 y = y / Constants.RegionSize; 1164 y = y / Constants.RegionSize;
1192 m_log.Debug("[ENTITY TRANSFER MODULE]: Starting to inform client about neighbour " + x + ", " + y + "(" + endPoint.ToString() + ")"); 1165 m_log.Debug("[ENTITY TRANSFER MODULE]: Starting to inform client about neighbour " + x + ", " + y + "(" + endPoint.ToString() + ")");
1193 1166
1194 string capsPath = "http://" + reg.ExternalHostName + ":" + reg.HttpPort 1167 string capsPath = reg.ServerURI + CapsUtil.GetCapsSeedPath(a.CapsPath);
1195 + "/CAPS/" + a.CapsPath + "0000/";
1196 1168
1197 string reason = String.Empty; 1169 string reason = String.Empty;
1198 1170