mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
Fix taking or returning locked objects losing permissions for owner
This commit is contained in:
@@ -477,7 +477,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||
{
|
||||
uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move) | 7;
|
||||
foreach (SceneObjectGroup grp in objsForEffectivePermissions)
|
||||
effectivePerms &= grp.GetEffectivePermissions();
|
||||
effectivePerms &= grp.GetEffectivePermissions(true);
|
||||
effectivePerms |= (uint)PermissionMask.Move;
|
||||
|
||||
if (remoteClient != null && (remoteClient.AgentId != so.RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions())
|
||||
|
||||
@@ -229,6 +229,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
|
||||
public uint GetEffectivePermissions()
|
||||
{
|
||||
return GetEffectivePermissions(false);
|
||||
}
|
||||
|
||||
public uint GetEffectivePermissions(bool useBase)
|
||||
{
|
||||
uint perms=(uint)(PermissionMask.Modify |
|
||||
PermissionMask.Copy |
|
||||
@@ -241,7 +246,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
{
|
||||
SceneObjectPart part = parts[i];
|
||||
ownerMask &= part.OwnerMask;
|
||||
if (useBase)
|
||||
ownerMask &= part.BaseMask;
|
||||
else
|
||||
ownerMask &= part.OwnerMask;
|
||||
perms &= part.Inventory.MaskEffectivePermissions();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user