aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes
diff options
context:
space:
mode:
authorBrian McBee2008-01-19 20:34:54 +0000
committerBrian McBee2008-01-19 20:34:54 +0000
commit17c25796b8517b5c50c5f1e561eeed5bdf68e480 (patch)
tree3baa8b656b986da23b343e83cc50a69ef67a40ce /OpenSim/Region/Environment/Scenes
parentMore debugging in hunt for that random startup crash (diff)
downloadopensim-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.cs36
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 }