diff options
author | Homer Horwitz | 2008-11-03 19:56:47 +0000 |
---|---|---|
committer | Homer Horwitz | 2008-11-03 19:56:47 +0000 |
commit | 580b11779a702f6562ceedac27270830bd36738f (patch) | |
tree | bb4781ecf1dbc8033b8a14ab61c876a8a45f0acb /OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | |
parent | Add a bit more error-checking to GetFriendRegionInfos. (diff) | |
download | opensim-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.cs | 4 |
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 |