From 8923ad755d97d5ddb4a29cb6f543b53195f0b461 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 5 Feb 2012 04:03:32 +0000 Subject: Check ban list for a particular parcel only when an avatar moves into it. This restores functionality remove in the last commit without reintroducing the performance penalty. --- .../CoreModules/World/Land/LandManagementModule.cs | 17 +++++++++++++++++ OpenSim/Region/CoreModules/World/Land/LandObject.cs | 4 ---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 1c503aa..00ac44d 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -389,6 +389,8 @@ namespace OpenSim.Region.CoreModules.World.Land { if (avatar.AbsolutePosition.Z < LandChannel.BAN_LINE_SAFETY_HIEGHT) { + ExpireAccessList(parcelAvatarIsEntering); + if (parcelAvatarIsEntering.IsBannedFromLand(avatar.UUID)) { SendYouAreBannedNotice(avatar); @@ -1711,5 +1713,20 @@ namespace OpenSim.Region.CoreModules.World.Land MainConsole.Instance.Output(report.ToString()); } + + private void ExpireAccessList(ILandObject land) + { + List delete = new List(); + + foreach (LandAccessEntry entry in land.LandData.ParcelAccessList) + { + if (entry.Expires != 0 && entry.Expires < Util.UnixTimeSinceEpoch()) + delete.Add(entry); + } + foreach (LandAccessEntry entry in delete) + land.LandData.ParcelAccessList.Remove(entry); + + m_scene.EventManager.TriggerLandObjectUpdated((uint)land.LandData.LocalID, land); + } } } diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index d86d50e..9aff86c 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -418,8 +418,6 @@ namespace OpenSim.Region.CoreModules.World.Land public bool IsBannedFromLand(UUID avatar) { -// ExpireAccessList(); -// if (m_scene.Permissions.IsAdministrator(avatar)) return false; @@ -447,8 +445,6 @@ namespace OpenSim.Region.CoreModules.World.Land public bool IsRestrictedFromLand(UUID avatar) { -// ExpireAccessList(); -// if (m_scene.Permissions.IsAdministrator(avatar)) return false; -- cgit v1.1