diff options
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 8754024..3eaa8fd 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -3860,6 +3860,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
3860 | // Let the SP know how we got here. This has a lot of interesting | 3860 | // Let the SP know how we got here. This has a lot of interesting |
3861 | // uses down the line. | 3861 | // uses down the line. |
3862 | sp.TeleportFlags = (TPFlags)teleportFlags; | 3862 | sp.TeleportFlags = (TPFlags)teleportFlags; |
3863 | |||
3864 | // We must carry out a further authorization check if there's an | ||
3865 | // attempt to make a child agent into a root agent, since SeeIntoRegion may have allowed a child | ||
3866 | // agent to login to a region where a full avatar would not be allowed. | ||
3867 | // | ||
3868 | // We determine whether this is a CreateAgent for a future non-child agent by inspecting | ||
3869 | // TeleportFlags, which will be default for a child connection. This relies on input from the source | ||
3870 | // region. | ||
3871 | if (sp.TeleportFlags != TPFlags.Default) | ||
3872 | { | ||
3873 | if (!AuthorizeUser(acd, false, out reason)) | ||
3874 | return false; | ||
3875 | } | ||
3863 | 3876 | ||
3864 | if (sp.IsChildAgent) | 3877 | if (sp.IsChildAgent) |
3865 | { | 3878 | { |