From 17c25796b8517b5c50c5f1e561eeed5bdf68e480 Mon Sep 17 00:00:00 2001 From: Brian McBee Date: Sat, 19 Jan 2008 20:34:54 +0000 Subject: checking return code may make failed teleports fail more gracefully. --- .../Scenes/SceneCommunicationService.cs | 36 ++++++++++++---------- 1 file changed, 19 insertions(+), 17 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs') diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index 29747c1..ffe8327 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs @@ -421,25 +421,27 @@ namespace OpenSim.Region.Environment.Scenes agent.startpos = position; agent.child = true; avatar.Close(); - m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent); + if (m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent) && 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), - capsPath); - avatar.MakeChildAgent(); - if (KillObject != null) + position, false)) ; { - KillObject(avatar.LocalId); - } - uint newRegionX = (uint) (regionHandle >> 40); - uint newRegionY = (((uint) (regionHandle)) >> 8); - uint oldRegionX = (uint) (m_regionInfo.RegionHandle >> 40); - uint oldRegionY = (((uint) (m_regionInfo.RegionHandle)) >> 8); - if (Util.fast_distance2d((int) (newRegionX - oldRegionX), (int) (newRegionY - oldRegionY)) > 3) - { - CloseChildAgentConnections(avatar); + AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo(); + string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId); + avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4), + capsPath); + avatar.MakeChildAgent(); + if (KillObject != null) + { + KillObject(avatar.LocalId); + } + uint newRegionX = (uint)(regionHandle >> 40); + uint newRegionY = (((uint)(regionHandle)) >> 8); + uint oldRegionX = (uint)(m_regionInfo.RegionHandle >> 40); + uint oldRegionY = (((uint)(m_regionInfo.RegionHandle)) >> 8); + if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3) + { + CloseChildAgentConnections(avatar); + } } } } -- cgit v1.1