diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index c07661a..caeb980 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -3885,7 +3885,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
3885 | 3885 | ||
3886 | lock (agent) | 3886 | lock (agent) |
3887 | { | 3887 | { |
3888 | //On login test land permisions | 3888 | // Optimistic: add or update the circuit data with the new agent circuit data and teleport flags. |
3889 | // We need the circuit data here for some of the subsequent checks. (groups, for example) | ||
3890 | // If the checks fail, we remove the circuit. | ||
3891 | agent.teleportFlags = teleportFlags; | ||
3892 | m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent); | ||
3893 | |||
3894 | // On login test land permisions | ||
3889 | if (vialogin) | 3895 | if (vialogin) |
3890 | { | 3896 | { |
3891 | IUserAccountCacheModule cache = RequestModuleInterface<IUserAccountCacheModule>(); | 3897 | IUserAccountCacheModule cache = RequestModuleInterface<IUserAccountCacheModule>(); |
@@ -3894,6 +3900,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3894 | if (!TestLandRestrictions(agent.AgentID, out reason, ref agent.startpos.X, ref agent.startpos.Y)) | 3900 | if (!TestLandRestrictions(agent.AgentID, out reason, ref agent.startpos.X, ref agent.startpos.Y)) |
3895 | { | 3901 | { |
3896 | m_log.DebugFormat("[CONNECTION BEGIN]: Denying access to {0} due to no land access", agent.AgentID.ToString()); | 3902 | m_log.DebugFormat("[CONNECTION BEGIN]: Denying access to {0} due to no land access", agent.AgentID.ToString()); |
3903 | m_authenticateHandler.RemoveCircuit(agent.circuitcode); | ||
3897 | return false; | 3904 | return false; |
3898 | } | 3905 | } |
3899 | } | 3906 | } |
@@ -3905,11 +3912,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
3905 | try | 3912 | try |
3906 | { | 3913 | { |
3907 | if (!VerifyUserPresence(agent, out reason)) | 3914 | if (!VerifyUserPresence(agent, out reason)) |
3915 | { | ||
3916 | m_authenticateHandler.RemoveCircuit(agent.circuitcode); | ||
3908 | return false; | 3917 | return false; |
3909 | } catch (Exception e) | 3918 | } |
3919 | } | ||
3920 | catch (Exception e) | ||
3910 | { | 3921 | { |
3911 | m_log.ErrorFormat( | 3922 | m_log.ErrorFormat( |
3912 | "[SCENE]: Exception verifying presence {0}{1}", e.Message, e.StackTrace); | 3923 | "[SCENE]: Exception verifying presence {0}{1}", e.Message, e.StackTrace); |
3924 | |||
3925 | m_authenticateHandler.RemoveCircuit(agent.circuitcode); | ||
3913 | return false; | 3926 | return false; |
3914 | } | 3927 | } |
3915 | } | 3928 | } |
@@ -3922,6 +3935,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3922 | { | 3935 | { |
3923 | if (!AuthorizeUser(agent, out reason)) | 3936 | if (!AuthorizeUser(agent, out reason)) |
3924 | { | 3937 | { |
3938 | m_authenticateHandler.RemoveCircuit(agent.circuitcode); | ||
3925 | return false; | 3939 | return false; |
3926 | } | 3940 | } |
3927 | } | 3941 | } |
@@ -3930,6 +3944,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3930 | { | 3944 | { |
3931 | m_log.ErrorFormat( | 3945 | m_log.ErrorFormat( |
3932 | "[SCENE]: Exception authorizing user {0}{1}", e.Message, e.StackTrace); | 3946 | "[SCENE]: Exception authorizing user {0}{1}", e.Message, e.StackTrace); |
3947 | |||
3948 | m_authenticateHandler.RemoveCircuit(agent.circuitcode); | ||
3933 | return false; | 3949 | return false; |
3934 | } | 3950 | } |
3935 | 3951 | ||
@@ -3959,9 +3975,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
3959 | } | 3975 | } |
3960 | } | 3976 | } |
3961 | 3977 | ||
3962 | // In all cases, add or update the circuit data with the new agent circuit data and teleport flags | ||
3963 | agent.teleportFlags = teleportFlags; | ||
3964 | m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent); | ||
3965 | 3978 | ||
3966 | if (CapsModule != null) | 3979 | if (CapsModule != null) |
3967 | { | 3980 | { |