diff options
author | UbitUmarov | 2017-01-17 13:24:09 +0000 |
---|---|---|
committer | UbitUmarov | 2017-01-17 13:24:09 +0000 |
commit | db2fbf6516a055beb71de9b82a9773c29bf3a73d (patch) | |
tree | 63aeb5610c0cd97d473254623dac28b17d7ef24e /OpenSim/Region/Framework/Scenes | |
parent | add more calls to effective permissions aggregation; do not change groupmask ... (diff) | |
download | opensim-SC_OLD-db2fbf6516a055beb71de9b82a9773c29bf3a73d.zip opensim-SC_OLD-db2fbf6516a055beb71de9b82a9773c29bf3a73d.tar.gz opensim-SC_OLD-db2fbf6516a055beb71de9b82a9773c29bf3a73d.tar.bz2 opensim-SC_OLD-db2fbf6516a055beb71de9b82a9773c29bf3a73d.tar.xz |
add more calls to effective permissions aggregation, some paths may still be missing on objects changes, but remove the aggregation on check paths, so all can be tested.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
9 files changed, 49 insertions, 23 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index c913271..473589a 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -338,6 +338,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
338 | // Update item with new asset | 338 | // Update item with new asset |
339 | item.AssetID = asset.FullID; | 339 | item.AssetID = asset.FullID; |
340 | group.UpdateInventoryItem(item); | 340 | group.UpdateInventoryItem(item); |
341 | group.AggregatePerms(); | ||
341 | 342 | ||
342 | part.SendPropertiesToClient(remoteClient); | 343 | part.SendPropertiesToClient(remoteClient); |
343 | 344 | ||
@@ -1214,6 +1215,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1214 | } | 1215 | } |
1215 | 1216 | ||
1216 | group.RemoveInventoryItem(localID, itemID); | 1217 | group.RemoveInventoryItem(localID, itemID); |
1218 | group.AggregatePerms(); | ||
1217 | } | 1219 | } |
1218 | 1220 | ||
1219 | part.SendPropertiesToClient(remoteClient); | 1221 | part.SendPropertiesToClient(remoteClient); |
@@ -1530,9 +1532,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1530 | destTaskItem.Type = srcTaskItem.Type; | 1532 | destTaskItem.Type = srcTaskItem.Type; |
1531 | 1533 | ||
1532 | destPart.Inventory.AddInventoryItem(destTaskItem, part.OwnerID != destPart.OwnerID); | 1534 | destPart.Inventory.AddInventoryItem(destTaskItem, part.OwnerID != destPart.OwnerID); |
1533 | |||
1534 | if ((srcTaskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) | 1535 | if ((srcTaskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) |
1536 | { | ||
1535 | part.Inventory.RemoveInventoryItem(itemId); | 1537 | part.Inventory.RemoveInventoryItem(itemId); |
1538 | } | ||
1536 | 1539 | ||
1537 | ScenePresence avatar; | 1540 | ScenePresence avatar; |
1538 | 1541 | ||
@@ -1978,6 +1981,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1978 | part.Inventory.AddInventoryItem(taskItem, false); | 1981 | part.Inventory.AddInventoryItem(taskItem, false); |
1979 | part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0); | 1982 | part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0); |
1980 | 1983 | ||
1984 | part.ParentGroup.AggregatePerms(); | ||
1985 | |||
1981 | // tell anyone managing scripts that a new script exists | 1986 | // tell anyone managing scripts that a new script exists |
1982 | EventManager.TriggerNewScript(agentID, part, taskItem.ItemID); | 1987 | EventManager.TriggerNewScript(agentID, part, taskItem.ItemID); |
1983 | 1988 | ||
@@ -2658,6 +2663,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2658 | 2663 | ||
2659 | // We can only call this after adding the scene object, since the scene object references the scene | 2664 | // We can only call this after adding the scene object, since the scene object references the scene |
2660 | // to find out if scripts should be activated at all. | 2665 | // to find out if scripts should be activated at all. |
2666 | group.AggregatePerms(); | ||
2661 | group.CreateScriptInstances(param, true, DefaultScriptEngine, 3); | 2667 | group.CreateScriptInstances(param, true, DefaultScriptEngine, 3); |
2662 | 2668 | ||
2663 | group.ScheduleGroupForFullUpdate(); | 2669 | group.ScheduleGroupForFullUpdate(); |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 2137b42..ff1e34e 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -2351,6 +2351,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2351 | EventManager.TriggerOnSceneObjectLoaded(group); | 2351 | EventManager.TriggerOnSceneObjectLoaded(group); |
2352 | SceneObjectPart rootPart = group.GetPart(group.UUID); | 2352 | SceneObjectPart rootPart = group.GetPart(group.UUID); |
2353 | rootPart.Flags &= ~PrimFlags.Scripted; | 2353 | rootPart.Flags &= ~PrimFlags.Scripted; |
2354 | group.AggregateDeepPerms(); | ||
2354 | rootPart.TrimPermissions(); | 2355 | rootPart.TrimPermissions(); |
2355 | 2356 | ||
2356 | // Don't do this here - it will get done later on when sculpt data is loaded. | 2357 | // Don't do this here - it will get done later on when sculpt data is loaded. |
@@ -2622,6 +2623,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2622 | if (UserManagementModule != null) | 2623 | if (UserManagementModule != null) |
2623 | sceneObject.RootPart.CreatorIdentification = UserManagementModule.GetUserUUI(ownerID); | 2624 | sceneObject.RootPart.CreatorIdentification = UserManagementModule.GetUserUUI(ownerID); |
2624 | 2625 | ||
2626 | sceneObject.AggregateDeepPerms(); | ||
2625 | sceneObject.ScheduleGroupForFullUpdate(); | 2627 | sceneObject.ScheduleGroupForFullUpdate(); |
2626 | 2628 | ||
2627 | return sceneObject; | 2629 | return sceneObject; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index dad8cac..7a97bfc 100755 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -343,7 +343,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
343 | sceneObject.ForceInventoryPersistence(); | 343 | sceneObject.ForceInventoryPersistence(); |
344 | sceneObject.HasGroupChanged = true; | 344 | sceneObject.HasGroupChanged = true; |
345 | } | 345 | } |
346 | 346 | sceneObject.AggregateDeepPerms(); | |
347 | return ret; | 347 | return ret; |
348 | } | 348 | } |
349 | 349 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs index 399e341..5ecf352 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs | |||
@@ -171,7 +171,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
171 | bool addFromAllowedDrop = agentID != part.OwnerID; | 171 | bool addFromAllowedDrop = agentID != part.OwnerID; |
172 | 172 | ||
173 | part.Inventory.AddInventoryItem(taskItem, addFromAllowedDrop); | 173 | part.Inventory.AddInventoryItem(taskItem, addFromAllowedDrop); |
174 | 174 | part.ParentGroup.AggregatePerms(); | |
175 | return true; | 175 | return true; |
176 | } | 176 | } |
177 | else | 177 | else |
@@ -259,7 +259,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
259 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) | 259 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) |
260 | // bc this is on heavy duty code paths | 260 | // bc this is on heavy duty code paths |
261 | // but for now we need to test the concept | 261 | // but for now we need to test the concept |
262 | AggregateDeepPerms(); | 262 | // AggregateDeepPerms(); |
263 | return m_EffectiveEveryOnePerms; | 263 | return m_EffectiveEveryOnePerms; |
264 | } | 264 | } |
265 | } | 265 | } |
@@ -272,7 +272,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
272 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) | 272 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) |
273 | // bc this is on heavy duty code paths | 273 | // bc this is on heavy duty code paths |
274 | // but for now we need to test the concept | 274 | // but for now we need to test the concept |
275 | AggregateDeepPerms(); | 275 | // AggregateDeepPerms(); |
276 | return m_EffectiveGroupPerms; | 276 | return m_EffectiveGroupPerms; |
277 | } | 277 | } |
278 | } | 278 | } |
@@ -285,7 +285,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
285 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) | 285 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) |
286 | // bc this is on heavy duty code paths | 286 | // bc this is on heavy duty code paths |
287 | // but for now we need to test the concept | 287 | // but for now we need to test the concept |
288 | AggregateDeepPerms(); | 288 | // AggregateDeepPerms(); |
289 | return m_EffectiveGroupOrEveryOnePerms; | 289 | return m_EffectiveGroupOrEveryOnePerms; |
290 | } | 290 | } |
291 | } | 291 | } |
@@ -298,7 +298,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
298 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) | 298 | // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) |
299 | // bc this is on heavy duty code paths | 299 | // bc this is on heavy duty code paths |
300 | // but for now we need to test the concept | 300 | // but for now we need to test the concept |
301 | AggregateDeepPerms(); | 301 | // AggregateDeepPerms(); |
302 | return m_EffectiveOwnerPerms; | 302 | return m_EffectiveOwnerPerms; |
303 | } | 303 | } |
304 | } | 304 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 033170d..d14c450 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -2441,17 +2441,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
2441 | dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed); | 2441 | dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed); |
2442 | dupe.m_rootPart.LinkNum = m_rootPart.LinkNum; | 2442 | dupe.m_rootPart.LinkNum = m_rootPart.LinkNum; |
2443 | 2443 | ||
2444 | |||
2445 | if (userExposed) | 2444 | if (userExposed) |
2446 | dupe.m_rootPart.TrimPermissions(); | 2445 | dupe.m_rootPart.TrimPermissions(); |
2447 | 2446 | ||
2448 | List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.GetArray()); | 2447 | List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.GetArray()); |
2449 | 2448 | ||
2450 | partList.Sort(delegate(SceneObjectPart p1, SceneObjectPart p2) | 2449 | partList.Sort(delegate(SceneObjectPart p1, SceneObjectPart p2) |
2451 | { | 2450 | { |
2452 | return p1.LinkNum.CompareTo(p2.LinkNum); | 2451 | return p1.LinkNum.CompareTo(p2.LinkNum); |
2453 | } | 2452 | } |
2454 | ); | 2453 | ); |
2455 | 2454 | ||
2456 | foreach (SceneObjectPart part in partList) | 2455 | foreach (SceneObjectPart part in partList) |
2457 | { | 2456 | { |
@@ -2503,10 +2502,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
2503 | if (dupe.m_rootPart.PhysActor != null) | 2502 | if (dupe.m_rootPart.PhysActor != null) |
2504 | dupe.m_rootPart.PhysActor.Building = false; // tell physics to finish building | 2503 | dupe.m_rootPart.PhysActor.Building = false; // tell physics to finish building |
2505 | 2504 | ||
2505 | dupe.AggregateDeepPerms(); | ||
2506 | |||
2506 | dupe.HasGroupChanged = true; | 2507 | dupe.HasGroupChanged = true; |
2507 | dupe.AttachToBackup(); | 2508 | dupe.AttachToBackup(); |
2508 | 2509 | ||
2509 | ScheduleGroupForFullUpdate(); | 2510 | dupe.ScheduleGroupForFullUpdate(); |
2510 | } | 2511 | } |
2511 | 2512 | ||
2512 | m_dupeInProgress = false; | 2513 | m_dupeInProgress = false; |
@@ -3426,6 +3427,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3426 | objectGroup.HasGroupChangedDueToDelink = true; | 3427 | objectGroup.HasGroupChangedDueToDelink = true; |
3427 | 3428 | ||
3428 | InvalidBoundsRadius(); | 3429 | InvalidBoundsRadius(); |
3430 | objectGroup.AggregatePerms(); | ||
3429 | 3431 | ||
3430 | if (sendEvents) | 3432 | if (sendEvents) |
3431 | linkPart.TriggerScriptChangedEvent(Changed.LINK); | 3433 | linkPart.TriggerScriptChangedEvent(Changed.LINK); |
@@ -3964,8 +3966,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3964 | 3966 | ||
3965 | public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive) | 3967 | public void AdjustChildPrimPermissions(bool forceTaskInventoryPermissive) |
3966 | { | 3968 | { |
3967 | uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff8; // Mask folded bits | 3969 | uint newOwnerMask = (uint)(PermissionMask.All | PermissionMask.Export) & 0xfffffff0; // Mask folded bits |
3968 | uint foldedPerms = RootPart.OwnerMask & 3; | 3970 | uint foldedPerms = RootPart.OwnerMask & (uint)PermissionMask.FoldedMask; |
3969 | 3971 | ||
3970 | ForEachPart(part => | 3972 | ForEachPart(part => |
3971 | { | 3973 | { |
@@ -3976,14 +3978,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
3976 | part.Inventory.ApplyGodPermissions(part.BaseMask); | 3978 | part.Inventory.ApplyGodPermissions(part.BaseMask); |
3977 | }); | 3979 | }); |
3978 | 3980 | ||
3979 | uint lockMask = ~(uint)(PermissionMask.Move | PermissionMask.Modify); | 3981 | uint lockMask = ~(uint)(PermissionMask.Move); |
3980 | uint lockBit = RootPart.OwnerMask & (uint)(PermissionMask.Move | PermissionMask.Modify); | 3982 | uint lockBit = RootPart.OwnerMask & (uint)(PermissionMask.Move); |
3981 | RootPart.OwnerMask = (RootPart.OwnerMask & lockBit) | ((newOwnerMask | foldedPerms) & lockMask); | 3983 | RootPart.OwnerMask = (RootPart.OwnerMask & lockBit) | ((newOwnerMask | foldedPerms) & lockMask); |
3982 | 3984 | ||
3983 | // m_log.DebugFormat( | 3985 | // m_log.DebugFormat( |
3984 | // "[SCENE OBJECT GROUP]: RootPart.OwnerMask now {0} for {1} in {2}", | 3986 | // "[SCENE OBJECT GROUP]: RootPart.OwnerMask now {0} for {1} in {2}", |
3985 | // (OpenMetaverse.PermissionMask)RootPart.OwnerMask, Name, Scene.Name); | 3987 | // (OpenMetaverse.PermissionMask)RootPart.OwnerMask, Name, Scene.Name); |
3986 | 3988 | AggregatePerms(); | |
3987 | RootPart.ScheduleFullUpdate(); | 3989 | RootPart.ScheduleFullUpdate(); |
3988 | } | 3990 | } |
3989 | 3991 | ||
@@ -4008,6 +4010,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4008 | { | 4010 | { |
4009 | foreach (SceneObjectPart part in Parts) | 4011 | foreach (SceneObjectPart part in Parts) |
4010 | part.Inventory.ApplyGodPermissions(RootPart.BaseMask); | 4012 | part.Inventory.ApplyGodPermissions(RootPart.BaseMask); |
4013 | AggregatePerms(); | ||
4011 | } | 4014 | } |
4012 | 4015 | ||
4013 | HasGroupChanged = true; | 4016 | HasGroupChanged = true; |
@@ -5223,6 +5226,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
5223 | { | 5226 | { |
5224 | part.ResetOwnerChangeFlag(); | 5227 | part.ResetOwnerChangeFlag(); |
5225 | }); | 5228 | }); |
5229 | AggregatePerms(); | ||
5226 | } | 5230 | } |
5227 | 5231 | ||
5228 | // clear some references to easy cg | 5232 | // clear some references to easy cg |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 0817144..69d8288 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -476,8 +476,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
476 | APIDActive = false; | 476 | APIDActive = false; |
477 | Flags = 0; | 477 | Flags = 0; |
478 | CreateSelected = true; | 478 | CreateSelected = true; |
479 | |||
480 | TrimPermissions(); | 479 | TrimPermissions(); |
480 | AggregateInnerPerms(); | ||
481 | } | 481 | } |
482 | 482 | ||
483 | #endregion Constructors | 483 | #endregion Constructors |
@@ -4495,7 +4495,7 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
4495 | 4495 | ||
4496 | break; | 4496 | break; |
4497 | } | 4497 | } |
4498 | 4498 | AggregateInnerPerms(); | |
4499 | SendFullUpdateToAllClients(); | 4499 | SendFullUpdateToAllClients(); |
4500 | } | 4500 | } |
4501 | } | 4501 | } |
@@ -4512,6 +4512,8 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
4512 | EveryoneMask = source.EveryoneMask & BaseMask; | 4512 | EveryoneMask = source.EveryoneMask & BaseMask; |
4513 | NextOwnerMask = source.NextOwnerMask & BaseMask; | 4513 | NextOwnerMask = source.NextOwnerMask & BaseMask; |
4514 | 4514 | ||
4515 | AggregateInnerPerms(); | ||
4516 | |||
4515 | if (OwnerMask != prevOwnerMask || | 4517 | if (OwnerMask != prevOwnerMask || |
4516 | GroupMask != prevGroupMask || | 4518 | GroupMask != prevGroupMask || |
4517 | EveryoneMask != prevEveryoneMask || | 4519 | EveryoneMask != prevEveryoneMask || |
@@ -5335,6 +5337,7 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
5335 | item.OwnerChanged = false; | 5337 | item.OwnerChanged = false; |
5336 | Inventory.UpdateInventoryItem(item, false, false); | 5338 | Inventory.UpdateInventoryItem(item, false, false); |
5337 | } | 5339 | } |
5340 | AggregateInnerPerms(); | ||
5338 | } | 5341 | } |
5339 | 5342 | ||
5340 | /// <summary> | 5343 | /// <summary> |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 29d9f08..545d44b 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -807,6 +807,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
807 | else | 807 | else |
808 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); | 808 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); |
809 | 809 | ||
810 | m_part.AggregateInnerPerms(); | ||
810 | m_inventorySerial++; | 811 | m_inventorySerial++; |
811 | //m_inventorySerial += 2; | 812 | //m_inventorySerial += 2; |
812 | HasInventoryChanged = true; | 813 | HasInventoryChanged = true; |
@@ -829,7 +830,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
829 | // m_part.TriggerScriptChangedEvent(Changed.INVENTORY); | 830 | // m_part.TriggerScriptChangedEvent(Changed.INVENTORY); |
830 | } | 831 | } |
831 | m_items.LockItemsForWrite(false); | 832 | m_items.LockItemsForWrite(false); |
832 | 833 | m_part.AggregateInnerPerms(); | |
833 | m_inventorySerial++; | 834 | m_inventorySerial++; |
834 | } | 835 | } |
835 | 836 | ||
@@ -1022,16 +1023,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
1022 | item.AssetID = m_items[item.ItemID].AssetID; | 1023 | item.AssetID = m_items[item.ItemID].AssetID; |
1023 | 1024 | ||
1024 | m_items[item.ItemID] = item; | 1025 | m_items[item.ItemID] = item; |
1026 | |||
1025 | m_inventorySerial++; | 1027 | m_inventorySerial++; |
1026 | if (fireScriptEvents) | 1028 | if (fireScriptEvents) |
1027 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); | 1029 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); |
1028 | 1030 | ||
1029 | if (considerChanged) | 1031 | if (considerChanged) |
1030 | { | 1032 | { |
1033 | m_part.AggregateInnerPerms(); | ||
1034 | m_part.ParentGroup.AggregatePerms(); | ||
1031 | HasInventoryChanged = true; | 1035 | HasInventoryChanged = true; |
1032 | m_part.ParentGroup.HasGroupChanged = true; | 1036 | m_part.ParentGroup.HasGroupChanged = true; |
1033 | } | 1037 | } |
1034 | m_items.LockItemsForWrite(false); | 1038 | m_items.LockItemsForWrite(false); |
1039 | |||
1035 | return true; | 1040 | return true; |
1036 | } | 1041 | } |
1037 | else | 1042 | else |
@@ -1068,6 +1073,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1068 | m_items.LockItemsForWrite(true); | 1073 | m_items.LockItemsForWrite(true); |
1069 | m_items.Remove(itemID); | 1074 | m_items.Remove(itemID); |
1070 | m_items.LockItemsForWrite(false); | 1075 | m_items.LockItemsForWrite(false); |
1076 | |||
1077 | m_part.AggregateInnerPerms(); | ||
1078 | m_part.ParentGroup.AggregatePerms(); | ||
1079 | |||
1071 | m_inventorySerial++; | 1080 | m_inventorySerial++; |
1072 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); | 1081 | m_part.TriggerScriptChangedEvent(Changed.INVENTORY); |
1073 | 1082 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index b8d210c..a12a401 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | |||
@@ -114,7 +114,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
114 | // Script state may, or may not, exist. Not having any, is NOT | 114 | // Script state may, or may not, exist. Not having any, is NOT |
115 | // ever a problem. | 115 | // ever a problem. |
116 | sceneObject.LoadScriptState(reader); | 116 | sceneObject.LoadScriptState(reader); |
117 | 117 | sceneObject.AggregateDeepPerms(); | |
118 | return sceneObject; | 118 | return sceneObject; |
119 | } | 119 | } |
120 | 120 | ||
@@ -278,7 +278,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
278 | // Script state may, or may not, exist. Not having any, is NOT | 278 | // Script state may, or may not, exist. Not having any, is NOT |
279 | // ever a problem. | 279 | // ever a problem. |
280 | sceneObject.LoadScriptState(doc); | 280 | sceneObject.LoadScriptState(doc); |
281 | 281 | sceneObject.AggregatePerms(); | |
282 | return sceneObject; | 282 | return sceneObject; |
283 | } | 283 | } |
284 | catch (Exception e) | 284 | catch (Exception e) |
@@ -1739,6 +1739,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1739 | 1739 | ||
1740 | reader.ReadEndElement(); // SceneObjectPart | 1740 | reader.ReadEndElement(); // SceneObjectPart |
1741 | 1741 | ||
1742 | obj.AggregateInnerPerms(); | ||
1742 | // m_log.DebugFormat("[SceneObjectSerializer]: parsed SOP {0} {1}", obj.Name, obj.UUID); | 1743 | // m_log.DebugFormat("[SceneObjectSerializer]: parsed SOP {0} {1}", obj.Name, obj.UUID); |
1743 | return obj; | 1744 | return obj; |
1744 | } | 1745 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs index 01bc491..0f022dd 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs | |||
@@ -70,6 +70,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
70 | //obj.RegenerateFullIDs(); | 70 | //obj.RegenerateFullIDs(); |
71 | 71 | ||
72 | scene.AddNewSceneObject(obj, true); | 72 | scene.AddNewSceneObject(obj, true); |
73 | obj.AggregateDeepPerms(); | ||
73 | } | 74 | } |
74 | } | 75 | } |
75 | else | 76 | else |