diff options
Diffstat (limited to '')
-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 |