Prevent linking objects while they are deeded. On unlinking deeded objects,

set LastOwnerID properly so the parts cannot be transferred, circumventing
no trans perms
avinationmerge
Melanie 2011-11-10 23:59:13 +01:00
parent e9055cec17
commit a081df75e2
1 changed files with 17 additions and 4 deletions

View File

@ -1743,6 +1743,11 @@ namespace OpenSim.Region.Framework.Scenes
{
SceneObjectGroup parentGroup = root.ParentGroup;
if (parentGroup == null) return;
// Cowardly refuse to link to a group owned root
if (parentGroup.OwnerID == parentGroup.GroupID)
return;
Monitor.Enter(m_updateLock);
try
@ -1769,6 +1774,8 @@ namespace OpenSim.Region.Framework.Scenes
}
foreach (SceneObjectGroup child in childGroups)
{
if (parentGroup.OwnerID == child.OwnerID)
{
parentGroup.LinkToGroup(child);
@ -1776,6 +1783,7 @@ namespace OpenSim.Region.Framework.Scenes
// Don't remove! Bad juju! Stay away! or fix physics!
child.AbsolutePosition = child.AbsolutePosition;
}
}
// We need to explicitly resend the newly link prim's object properties since no other actions
// occur on link to invoke this elsewhere (such as object selection)
@ -1819,9 +1827,14 @@ namespace OpenSim.Region.Framework.Scenes
if (part.ParentGroup.PrimCount != 1) // Skip single
{
if (part.LinkNum < 2) // Root
{
rootParts.Add(part);
}
else
{
part.LastOwnerID = part.ParentGroup.RootPart.LastOwnerID;
childParts.Add(part);
}
SceneObjectGroup group = part.ParentGroup;
if (!affectedGroups.Contains(group))