diff options
author | Brian McBee | 2008-01-19 20:34:54 +0000 |
---|---|---|
committer | Brian McBee | 2008-01-19 20:34:54 +0000 |
commit | 17c25796b8517b5c50c5f1e561eeed5bdf68e480 (patch) | |
tree | 3baa8b656b986da23b343e83cc50a69ef67a40ce /OpenSim/Region/Environment/Scenes | |
parent | More debugging in hunt for that random startup crash (diff) | |
download | opensim-SC-17c25796b8517b5c50c5f1e561eeed5bdf68e480.zip opensim-SC-17c25796b8517b5c50c5f1e561eeed5bdf68e480.tar.gz opensim-SC-17c25796b8517b5c50c5f1e561eeed5bdf68e480.tar.bz2 opensim-SC-17c25796b8517b5c50c5f1e561eeed5bdf68e480.tar.xz |
checking return code may make failed teleports fail more gracefully.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | 36 |
1 files changed, 19 insertions, 17 deletions
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 | |||
421 | agent.startpos = position; | 421 | agent.startpos = position; |
422 | agent.child = true; | 422 | agent.child = true; |
423 | avatar.Close(); | 423 | avatar.Close(); |
424 | m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent); | 424 | if (m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent) && |
425 | m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId, | 425 | m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId, |
426 | position, false); | 426 | position, false)) ; |
427 | AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo(); | ||
428 | string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId); | ||
429 | avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4), | ||
430 | capsPath); | ||
431 | avatar.MakeChildAgent(); | ||
432 | if (KillObject != null) | ||
433 | { | 427 | { |
434 | KillObject(avatar.LocalId); | 428 | AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo(); |
435 | } | 429 | string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId); |
436 | uint newRegionX = (uint) (regionHandle >> 40); | 430 | avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4), |
437 | uint newRegionY = (((uint) (regionHandle)) >> 8); | 431 | capsPath); |
438 | uint oldRegionX = (uint) (m_regionInfo.RegionHandle >> 40); | 432 | avatar.MakeChildAgent(); |
439 | uint oldRegionY = (((uint) (m_regionInfo.RegionHandle)) >> 8); | 433 | if (KillObject != null) |
440 | if (Util.fast_distance2d((int) (newRegionX - oldRegionX), (int) (newRegionY - oldRegionY)) > 3) | 434 | { |
441 | { | 435 | KillObject(avatar.LocalId); |
442 | CloseChildAgentConnections(avatar); | 436 | } |
437 | uint newRegionX = (uint)(regionHandle >> 40); | ||
438 | uint newRegionY = (((uint)(regionHandle)) >> 8); | ||
439 | uint oldRegionX = (uint)(m_regionInfo.RegionHandle >> 40); | ||
440 | uint oldRegionY = (((uint)(m_regionInfo.RegionHandle)) >> 8); | ||
441 | if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3) | ||
442 | { | ||
443 | CloseChildAgentConnections(avatar); | ||
444 | } | ||
443 | } | 445 | } |
444 | } | 446 | } |
445 | } | 447 | } |