aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
diff options
context:
space:
mode:
authorHomer Horwitz2008-11-03 19:56:47 +0000
committerHomer Horwitz2008-11-03 19:56:47 +0000
commit580b11779a702f6562ceedac27270830bd36738f (patch)
treebb4781ecf1dbc8033b8a14ab61c876a8a45f0acb /OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
parentAdd a bit more error-checking to GetFriendRegionInfos. (diff)
downloadopensim-SC-580b11779a702f6562ceedac27270830bd36738f.zip
opensim-SC-580b11779a702f6562ceedac27270830bd36738f.tar.gz
opensim-SC-580b11779a702f6562ceedac27270830bd36738f.tar.bz2
opensim-SC-580b11779a702f6562ceedac27270830bd36738f.tar.xz
On TP, child-agents weren't closed down properly, as the list of child-regions
was cleared before using it to find the children.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs4
1 files changed, 4 insertions, 0 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
index b716980..fb8ec94 100644
--- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
@@ -672,6 +672,9 @@ namespace OpenSim.Region.Environment.Scenes
672 return; 672 return;
673 } 673 }
674 674
675 // the avatar.Close below will clear the child region list. We need this below for (possibly)
676 // closing the child agents, so save it here (we need a copy as it is Clear()-ed).
677 List<ulong> childRegions = new List<ulong>(avatar.GetKnownRegionList());
675 avatar.Close(); 678 avatar.Close();
676 679
677 // Compared to ScenePresence.CrossToNewRegion(), there's no obvious code to handle a teleport 680 // Compared to ScenePresence.CrossToNewRegion(), there's no obvious code to handle a teleport
@@ -721,6 +724,7 @@ namespace OpenSim.Region.Environment.Scenes
721 if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3) 724 if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3)
722 { 725 {
723 SendCloseChildAgentConnections(avatar.UUID,avatar.GetKnownRegionList()); 726 SendCloseChildAgentConnections(avatar.UUID,avatar.GetKnownRegionList());
727 SendCloseChildAgentConnections(avatar.UUID, childRegions);
724 CloseConnection(m_regionInfo.RegionHandle, avatar.UUID); 728 CloseConnection(m_regionInfo.RegionHandle, avatar.UUID);
725 } 729 }
726 // if (teleport success) // seems to be always success here 730 // if (teleport success) // seems to be always success here