From 522695c821c9f68d6c13533220de428f0d036dd7 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 29 Apr 2017 22:09:45 +0100 Subject: update folded permitions if taking from world, or after unfold --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 15 ++------------- .../CoreModules/World/Objects/BuySell/BuySellModule.cs | 4 ++-- OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 6 ++++-- 3 files changed, 8 insertions(+), 17 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index bce0610..d4f9c16 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -594,16 +594,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess uint basePerms = effectivePerms & so.RootPart.NextOwnerMask; // rebuild folded perms since we don't have then on inworld objects - // possible existent ones where already unfolded - - if((basePerms & (uint)PermissionMask.Copy) == 0) - basePerms |= (uint)PermissionMask.Transfer; - - // unlock - basePerms |= (uint)PermissionMask.Move; - - basePerms &= ~(uint)PermissionMask.FoldedMask; - basePerms |= ((basePerms >> (int)PermissionMask.FoldingShift) & (uint)PermissionMask.FoldedMask); + basePerms = PermissionsUtil.FixAndFoldPermissions(basePerms); item.BasePermissions = basePerms; item.CurrentPermissions = item.BasePermissions; @@ -1146,9 +1137,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if ((item.BasePermissions & (uint)PermissionMask.FoldedMask) != 0) { // We have permissions stored there so use them - part.NextOwnerMask = ((item.BasePermissions & 7) << 13); - if ((item.BasePermissions & (uint)PermissionMask.FoldedExport) != 0) - part.NextOwnerMask |= (uint)PermissionMask.Export; + part.NextOwnerMask = ((item.BasePermissions & (uint)PermissionMask.FoldedMask) << (int)PermissionMask.FoldingShift); part.NextOwnerMask |= (uint)PermissionMask.Move; } else diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index 84f33d1..af53aa3 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs @@ -210,9 +210,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell PermissionsUtil.ApplyFoldedPermissions(perms, ref perms); - item.BasePermissions = perms & part.NextOwnerMask; + perms &= part.NextOwnerMask; -// we need to rebuild folded here + item.BasePermissions = PermissionsUtil.FixAndFoldPermissions(perms); item.CurrentPermissions = item.BasePermissions; item.NextPermissions = part.NextOwnerMask; diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 5e19a8a..0549571 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1272,14 +1272,16 @@ namespace OpenSim.Region.Framework.Scenes { uint perms = agentItem.BasePermissions; PermissionsUtil.ApplyFoldedPermissions(taskItem.CurrentPermissions, ref perms ); - agentItem.BasePermissions = perms; +// perms |= (uint)PermissionMask.Move; +// agentItem.BasePermissions = perms; + agentItem.BasePermissions = PermissionsUtil.FixAndFoldPermissions(perms); } else agentItem.BasePermissions &= taskItem.CurrentPermissions; // always unlock agentItem.BasePermissions |= (uint)PermissionMask.Move; - + agentItem.CurrentPermissions = agentItem.BasePermissions; agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; -- cgit v1.1