diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 1c503aa8c3..00ac44d652 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 d86d50e54e..9aff86c9ca 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;