aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
diff options
context:
space:
mode:
authorBrian McBee2008-01-20 19:12:00 +0000
committerBrian McBee2008-01-20 19:12:00 +0000
commit730e2d6d7c0e6ddc6448c4b6064498294134d67f (patch)
treed26706e6361599b8cadc49eac59ba281fe459755 /OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
parentTedds temp fix for startup crash: Waiting 3 seconds for stuff to catch up. (S... (diff)
downloadopensim-SC_OLD-730e2d6d7c0e6ddc6448c4b6064498294134d67f.zip
opensim-SC_OLD-730e2d6d7c0e6ddc6448c4b6064498294134d67f.tar.gz
opensim-SC_OLD-730e2d6d7c0e6ddc6448c4b6064498294134d67f.tar.bz2
opensim-SC_OLD-730e2d6d7c0e6ddc6448c4b6064498294134d67f.tar.xz
Check if remote simulator is up before attempting teleport. Teleport to a remote region should now fail gracefully if remote simulator is down.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs14
1 files changed, 10 insertions, 4 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
index ffe8327..640cb3b 100644
--- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
@@ -420,11 +420,13 @@ namespace OpenSim.Region.Environment.Scenes
420 agent.InventoryFolder = LLUUID.Zero; 420 agent.InventoryFolder = LLUUID.Zero;
421 agent.startpos = position; 421 agent.startpos = position;
422 agent.child = true; 422 agent.child = true;
423 avatar.Close(); 423
424 if (m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent) && 424
425 m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId, 425 if(m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent))
426 position, false)) ;
427 { 426 {
427 avatar.Close();
428 m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId,
429 position, false);
428 AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo(); 430 AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo();
429 string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId); 431 string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId);
430 avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4), 432 avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4),
@@ -443,6 +445,10 @@ namespace OpenSim.Region.Environment.Scenes
443 CloseChildAgentConnections(avatar); 445 CloseChildAgentConnections(avatar);
444 } 446 }
445 } 447 }
448 else
449 {
450 avatar.ControllingClient.SendTeleportFailed("Remote Region appears to be down");
451 }
446 } 452 }
447 } 453 }
448 } 454 }