Check if remote simulator is up before attempting teleport. Teleport to a remote region should now fail gracefully if remote simulator is down.

This commit is contained in:
Brian McBee
2008-01-20 19:12:00 +00:00
parent 8ffefd2bd6
commit 730e2d6d7c
5 changed files with 73 additions and 28 deletions

View File

@@ -420,11 +420,13 @@ namespace OpenSim.Region.Environment.Scenes
agent.InventoryFolder = LLUUID.Zero;
agent.startpos = position;
agent.child = true;
avatar.Close();
if (m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent) &&
m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId,
position, false)) ;
if(m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent))
{
avatar.Close();
m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId,
position, false);
AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo();
string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId);
avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4),
@@ -443,6 +445,10 @@ namespace OpenSim.Region.Environment.Scenes
CloseChildAgentConnections(avatar);
}
}
else
{
avatar.ControllingClient.SendTeleportFailed("Remote Region appears to be down");
}
}
}
}