From d550b485f1409030149447c71b3de881232d4897 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 24 Oct 2016 10:23:31 +0100 Subject: viewer crash bug fix: fis the udp packets split of SendEstateList() large lists; Enforce size limits on the estate lists since currently required for viewers compatibily; improve handling of changes with large selected items. This is still bad, users may need to close and reopen the region/estate information to get correct Allowed and Banned lists after a change. This happens because of viewer resent/outOfOrder packets that completly break this lists updates protocol --- OpenSim/Framework/Constants.cs | 10 +++++++++- OpenSim/Framework/EstateSettings.cs | 32 ++++++++++++++++++++++++++++---- 2 files changed, 37 insertions(+), 5 deletions(-) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/Constants.cs b/OpenSim/Framework/Constants.cs index 3ba264c..209c991 100644 --- a/OpenSim/Framework/Constants.cs +++ b/OpenSim/Framework/Constants.cs @@ -46,12 +46,20 @@ namespace OpenSim.Framework public enum EstateAccessCodex : uint { - AccessOptions = 1, + AllowedAccess = 1, AllowedGroups = 2, EstateBans = 4, EstateManagers = 8 } + public enum EstateAccessLimits : int + { + AllowedAccess = 500, + AllowedGroups = 63, + EstateBans = 500, + EstateManagers = 10 + } + [Flags]public enum TeleportFlags : uint { /// No flags set, or teleport failed diff --git a/OpenSim/Framework/EstateSettings.cs b/OpenSim/Framework/EstateSettings.cs index 4c9f6e9..844230b 100644 --- a/OpenSim/Framework/EstateSettings.cs +++ b/OpenSim/Framework/EstateSettings.cs @@ -305,11 +305,17 @@ namespace OpenSim.Framework OnSave(this); } + public int EstateUsersCount() + { + return l_EstateAccess.Count; + } + public void AddEstateUser(UUID avatarID) { if (avatarID == UUID.Zero) return; - if (!l_EstateAccess.Contains(avatarID)) + if (!l_EstateAccess.Contains(avatarID) && + (l_EstateAccess.Count < (int)Constants.EstateAccessLimits.AllowedAccess)) l_EstateAccess.Add(avatarID); } @@ -319,11 +325,17 @@ namespace OpenSim.Framework l_EstateAccess.Remove(avatarID); } + public int EstateGroupsCount() + { + return l_EstateGroups.Count; + } + public void AddEstateGroup(UUID avatarID) { if (avatarID == UUID.Zero) return; - if (!l_EstateGroups.Contains(avatarID)) + if (!l_EstateGroups.Contains(avatarID) && + (l_EstateGroups.Count < (int)Constants.EstateAccessLimits.AllowedGroups)) l_EstateGroups.Add(avatarID); } @@ -333,11 +345,17 @@ namespace OpenSim.Framework l_EstateGroups.Remove(avatarID); } + public int EstateManagersCount() + { + return l_EstateManagers.Count; + } + public void AddEstateManager(UUID avatarID) { if (avatarID == UUID.Zero) return; - if (!l_EstateManagers.Contains(avatarID)) + if (!l_EstateManagers.Contains(avatarID) && + (l_EstateManagers.Count < (int)Constants.EstateAccessLimits.EstateManagers)) l_EstateManagers.Add(avatarID); } @@ -403,11 +421,17 @@ namespace OpenSim.Framework return false; } + public int EstateBansCount() + { + return l_EstateBans.Count; + } + public void AddBan(EstateBan ban) { if (ban == null) return; - if (!IsBanned(ban.BannedUserID, 32)) //Ignore age-based bans + if (!IsBanned(ban.BannedUserID, 32) && + (l_EstateBans.Count < (int)Constants.EstateAccessLimits.EstateBans)) //Ignore age-based bans l_EstateBans.Add(ban); } -- cgit v1.1 From 4c76a061c742aee0ab09db70ff1e074b68500668 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 24 Oct 2016 09:21:44 -0700 Subject: Flip master to 0.9.1 --- OpenSim/Framework/VersionInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/VersionInfo.cs b/OpenSim/Framework/VersionInfo.cs index 2e3c394..7bb0351 100644 --- a/OpenSim/Framework/VersionInfo.cs +++ b/OpenSim/Framework/VersionInfo.cs @@ -29,8 +29,8 @@ namespace OpenSim { public class VersionInfo { - public const string VersionNumber = "0.9.0.0"; - public const string AssemblyVersionNumber = "0.9.0.*"; + public const string VersionNumber = "0.9.1.0"; + public const string AssemblyVersionNumber = "0.9.1.*"; private const Flavour VERSION_FLAVOUR = Flavour.Dev; -- cgit v1.1