aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorUbitUmarov2017-06-15 04:20:32 +0100
committerUbitUmarov2017-06-15 04:20:32 +0100
commit969d5f742cc3721a4eb53125410660dd7410ce45 (patch)
treed9c02aca7f6a315e1eb0769a5dfbe53ab655a805 /OpenSim
parent fix llsd DeserialiseOSDMap cast from boolean to int, this seems to fix alche... (diff)
downloadopensim-SC_OLD-969d5f742cc3721a4eb53125410660dd7410ce45.zip
opensim-SC_OLD-969d5f742cc3721a4eb53125410660dd7410ce45.tar.gz
opensim-SC_OLD-969d5f742cc3721a4eb53125410660dd7410ce45.tar.bz2
opensim-SC_OLD-969d5f742cc3721a4eb53125410660dd7410ce45.tar.xz
update inventory item permissions on deattach
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs25
1 files changed, 25 insertions, 0 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index cf188aa..5bca482 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -42,6 +42,7 @@ using OpenSim.Region.Framework.Interfaces;
42using OpenSim.Region.Framework.Scenes; 42using OpenSim.Region.Framework.Scenes;
43using OpenSim.Region.Framework.Scenes.Serialization; 43using OpenSim.Region.Framework.Scenes.Serialization;
44using OpenSim.Services.Interfaces; 44using OpenSim.Services.Interfaces;
45using PermissionMask = OpenSim.Framework.PermissionMask;
45 46
46namespace OpenSim.Region.CoreModules.Avatar.Attachments 47namespace OpenSim.Region.CoreModules.Avatar.Attachments
47{ 48{
@@ -896,6 +897,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
896 897
897 if (item != null) 898 if (item != null)
898 { 899 {
900 // attach is rez, need to update permissions
901 item.Flags &= ~(uint)(InventoryItemFlags.ObjectSlamPerm | InventoryItemFlags.ObjectOverwriteBase |
902 InventoryItemFlags.ObjectOverwriteOwner | InventoryItemFlags.ObjectOverwriteGroup |
903 InventoryItemFlags.ObjectOverwriteEveryone | InventoryItemFlags.ObjectOverwriteNextOwner);
904
905 uint permsBase = (uint)(PermissionMask.Copy | PermissionMask.Transfer |
906 PermissionMask.Modify | PermissionMask.Move |
907 PermissionMask.Export | PermissionMask.FoldedMask);
908
909 permsBase &= grp.CurrentAndFoldedNextPermissions();
910 permsBase |= (uint)PermissionMask.Move;
911 item.BasePermissions = permsBase;
912 item.CurrentPermissions = permsBase;
913 item.NextPermissions = permsBase & grp.RootPart.NextOwnerMask | (uint)PermissionMask.Move;
914 item.EveryOnePermissions = permsBase & grp.RootPart.EveryoneMask;
915 item.GroupPermissions = permsBase & grp.RootPart.GroupMask;
916 item.CurrentPermissions &=
917 ((uint)PermissionMask.Copy |
918 (uint)PermissionMask.Transfer |
919 (uint)PermissionMask.Modify |
920 (uint)PermissionMask.Move |
921 (uint)PermissionMask.Export |
922 (uint)PermissionMask.FoldedMask); // Preserve folded permissions ??
923
899 AssetBase asset = m_scene.CreateAsset( 924 AssetBase asset = m_scene.CreateAsset(
900 grp.GetPartName(grp.LocalId), 925 grp.GetPartName(grp.LocalId),
901 grp.GetPartDescription(grp.LocalId), 926 grp.GetPartDescription(grp.LocalId),