diff options
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 3dd0f3a..f0ae45e 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -3278,7 +3278,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
3278 | m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", m_regInfo.RegionName); | 3278 | m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", m_regInfo.RegionName); |
3279 | } | 3279 | } |
3280 | 3280 | ||
3281 | |||
3282 | /// <summary> | 3281 | /// <summary> |
3283 | /// Do the work necessary to initiate a new user connection for a particular scene. | 3282 | /// Do the work necessary to initiate a new user connection for a particular scene. |
3284 | /// At the moment, this consists of setting up the caps infrastructure | 3283 | /// At the moment, this consists of setting up the caps infrastructure |
@@ -3291,6 +3290,23 @@ namespace OpenSim.Region.Framework.Scenes | |||
3291 | /// also return a reason.</returns> | 3290 | /// also return a reason.</returns> |
3292 | public bool NewUserConnection(AgentCircuitData agent, uint teleportFlags, out string reason) | 3291 | public bool NewUserConnection(AgentCircuitData agent, uint teleportFlags, out string reason) |
3293 | { | 3292 | { |
3293 | return NewUserConnection(agent, teleportFlags, out reason, true); | ||
3294 | } | ||
3295 | |||
3296 | /// <summary> | ||
3297 | /// Do the work necessary to initiate a new user connection for a particular scene. | ||
3298 | /// At the moment, this consists of setting up the caps infrastructure | ||
3299 | /// The return bool should allow for connections to be refused, but as not all calling paths | ||
3300 | /// take proper notice of it let, we allowed banned users in still. | ||
3301 | /// </summary> | ||
3302 | /// <param name="agent">CircuitData of the agent who is connecting</param> | ||
3303 | /// <param name="reason">Outputs the reason for the false response on this string</param> | ||
3304 | /// <param name="requirePresenceLookup">True for normal presence. False for NPC | ||
3305 | /// or other applications where a full grid/Hypergrid presence may not be required.</param> | ||
3306 | /// <returns>True if the region accepts this agent. False if it does not. False will | ||
3307 | /// also return a reason.</returns> | ||
3308 | public bool NewUserConnection(AgentCircuitData agent, uint teleportFlags, out string reason, bool requirePresenceLookup) | ||
3309 | { | ||
3294 | bool vialogin = ((teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0 || | 3310 | bool vialogin = ((teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0 || |
3295 | (teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0); | 3311 | (teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0); |
3296 | reason = String.Empty; | 3312 | reason = String.Empty; |
@@ -3339,16 +3355,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
3339 | 3355 | ||
3340 | if (sp == null) // We don't have an [child] agent here already | 3356 | if (sp == null) // We don't have an [child] agent here already |
3341 | { | 3357 | { |
3342 | 3358 | if (requirePresenceLookup) | |
3343 | try | ||
3344 | { | 3359 | { |
3345 | if (!VerifyUserPresence(agent, out reason)) | 3360 | try |
3361 | { | ||
3362 | if (!VerifyUserPresence(agent, out reason)) | ||
3363 | return false; | ||
3364 | } | ||
3365 | catch (Exception e) | ||
3366 | { | ||
3367 | m_log.ErrorFormat("[CONNECTION BEGIN]: Exception verifying presence " + e.ToString()); | ||
3346 | return false; | 3368 | return false; |
3347 | } | 3369 | } |
3348 | catch (Exception e) | ||
3349 | { | ||
3350 | m_log.ErrorFormat("[CONNECTION BEGIN]: Exception verifying presence " + e.ToString()); | ||
3351 | return false; | ||
3352 | } | 3370 | } |
3353 | 3371 | ||
3354 | try | 3372 | try |