diff options
author | Brian McBee | 2008-01-20 19:12:00 +0000 |
---|---|---|
committer | Brian McBee | 2008-01-20 19:12:00 +0000 |
commit | 730e2d6d7c0e6ddc6448c4b6064498294134d67f (patch) | |
tree | d26706e6361599b8cadc49eac59ba281fe459755 /OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | |
parent | Tedds temp fix for startup crash: Waiting 3 seconds for stuff to catch up. (S... (diff) | |
download | opensim-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.cs | 14 |
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 | } |