diff options
4 files changed, 22 insertions, 8 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 25f6ef0..7ccdd58 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -669,8 +669,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
669 | public void ProcessSpecificPacketAsync(object state) | 669 | public void ProcessSpecificPacketAsync(object state) |
670 | { | 670 | { |
671 | AsyncPacketProcess packetObject = (AsyncPacketProcess)state; | 671 | AsyncPacketProcess packetObject = (AsyncPacketProcess)state; |
672 | packetObject.result = packetObject.Method(packetObject.ClientView, packetObject.Pack); | 672 | packetObject.result = packetObject.Method(packetObject.ClientView, packetObject.Pack); |
673 | |||
674 | } | 673 | } |
675 | 674 | ||
676 | #endregion Packet Handling | 675 | #endregion Packet Handling |
@@ -7683,12 +7682,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7683 | newTaskItem.GroupPermissions = updatetask.InventoryData.GroupMask; | 7682 | newTaskItem.GroupPermissions = updatetask.InventoryData.GroupMask; |
7684 | newTaskItem.EveryonePermissions = updatetask.InventoryData.EveryoneMask; | 7683 | newTaskItem.EveryonePermissions = updatetask.InventoryData.EveryoneMask; |
7685 | newTaskItem.NextPermissions = updatetask.InventoryData.NextOwnerMask; | 7684 | newTaskItem.NextPermissions = updatetask.InventoryData.NextOwnerMask; |
7685 | |||
7686 | // Unused? Clicking share with group sets GroupPermissions instead, so perhaps this is something | ||
7687 | // different | ||
7686 | //newTaskItem.GroupOwned=updatetask.InventoryData.GroupOwned; | 7688 | //newTaskItem.GroupOwned=updatetask.InventoryData.GroupOwned; |
7687 | newTaskItem.Type = updatetask.InventoryData.Type; | 7689 | newTaskItem.Type = updatetask.InventoryData.Type; |
7688 | newTaskItem.InvType = updatetask.InventoryData.InvType; | 7690 | newTaskItem.InvType = updatetask.InventoryData.InvType; |
7689 | newTaskItem.Flags = updatetask.InventoryData.Flags; | 7691 | newTaskItem.Flags = updatetask.InventoryData.Flags; |
7690 | //newTaskItem.SaleType=updatetask.InventoryData.SaleType; | 7692 | //newTaskItem.SaleType=updatetask.InventoryData.SaleType; |
7691 | //newTaskItem.SalePrice=updatetask.InventoryData.SalePrice;; | 7693 | //newTaskItem.SalePrice=updatetask.InventoryData.SalePrice; |
7692 | newTaskItem.Name = Util.FieldToString(updatetask.InventoryData.Name); | 7694 | newTaskItem.Name = Util.FieldToString(updatetask.InventoryData.Name); |
7693 | newTaskItem.Description = Util.FieldToString(updatetask.InventoryData.Description); | 7695 | newTaskItem.Description = Util.FieldToString(updatetask.InventoryData.Description); |
7694 | newTaskItem.CreationDate = (uint)updatetask.InventoryData.CreationDate; | 7696 | newTaskItem.CreationDate = (uint)updatetask.InventoryData.CreationDate; |
@@ -7696,7 +7698,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7696 | newTaskItem, updatetask.UpdateData.LocalID); | 7698 | newTaskItem, updatetask.UpdateData.LocalID); |
7697 | } | 7699 | } |
7698 | } | 7700 | } |
7699 | } | 7701 | } |
7700 | 7702 | ||
7701 | return true; | 7703 | return true; |
7702 | } | 7704 | } |
@@ -11088,7 +11090,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11088 | { | 11090 | { |
11089 | if (m_debugPacketLevel >= 255) | 11091 | if (m_debugPacketLevel >= 255) |
11090 | m_log.DebugFormat("[CLIENT]: Packet IN {0}", Pack.Type); | 11092 | m_log.DebugFormat("[CLIENT]: Packet IN {0}", Pack.Type); |
11091 | 11093 | ||
11092 | if (!ProcessPacketMethod(Pack)) | 11094 | if (!ProcessPacketMethod(Pack)) |
11093 | m_log.Warn("[CLIENT]: unhandled packet " + Pack.Type); | 11095 | m_log.Warn("[CLIENT]: unhandled packet " + Pack.Type); |
11094 | 11096 | ||
@@ -11615,6 +11617,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11615 | public PacketMethod method; | 11617 | public PacketMethod method; |
11616 | public bool Async; | 11618 | public bool Async; |
11617 | } | 11619 | } |
11620 | |||
11618 | public class AsyncPacketProcess | 11621 | public class AsyncPacketProcess |
11619 | { | 11622 | { |
11620 | public bool result = false; | 11623 | public bool result = false; |
@@ -11692,4 +11695,4 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11692 | OutPacket(dialog, ThrottleOutPacketType.Task); | 11695 | OutPacket(dialog, ThrottleOutPacketType.Task); |
11693 | } | 11696 | } |
11694 | } | 11697 | } |
11695 | } | 11698 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 31c0be1..3b7f38e 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -1160,6 +1160,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1160 | item = LibraryService.LibraryRootFolder.FindItem(itemID); | 1160 | item = LibraryService.LibraryRootFolder.FindItem(itemID); |
1161 | } | 1161 | } |
1162 | 1162 | ||
1163 | // If we've found the item in the user's inventory or in the library | ||
1163 | if (item != null) | 1164 | if (item != null) |
1164 | { | 1165 | { |
1165 | part.ParentGroup.AddInventoryItem(remoteClient, primLocalID, item, copyID); | 1166 | part.ParentGroup.AddInventoryItem(remoteClient, primLocalID, item, copyID); |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs index 71354b4..4034744 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs | |||
@@ -173,7 +173,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
173 | item.NextPermissions; | 173 | item.NextPermissions; |
174 | taskItem.NextPermissions = item.NextPermissions; | 174 | taskItem.NextPermissions = item.NextPermissions; |
175 | taskItem.CurrentPermissions |= 8; | 175 | taskItem.CurrentPermissions |= 8; |
176 | } else { | 176 | } |
177 | else | ||
178 | { | ||
177 | taskItem.BasePermissions = item.BasePermissions; | 179 | taskItem.BasePermissions = item.BasePermissions; |
178 | taskItem.CurrentPermissions = item.CurrentPermissions; | 180 | taskItem.CurrentPermissions = item.CurrentPermissions; |
179 | taskItem.CurrentPermissions |= 8; | 181 | taskItem.CurrentPermissions |= 8; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 77bf6fe..2e13f90 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -527,6 +527,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
527 | item.ParentID = m_part.UUID; | 527 | item.ParentID = m_part.UUID; |
528 | item.ParentPartID = m_part.UUID; | 528 | item.ParentPartID = m_part.UUID; |
529 | item.Name = name; | 529 | item.Name = name; |
530 | item.GroupID = m_part.GroupID; | ||
530 | 531 | ||
531 | lock (m_items) | 532 | lock (m_items) |
532 | { | 533 | { |
@@ -619,6 +620,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
619 | item.ParentID = m_part.UUID; | 620 | item.ParentID = m_part.UUID; |
620 | item.ParentPartID = m_part.UUID; | 621 | item.ParentPartID = m_part.UUID; |
621 | item.Flags = m_items[item.ItemID].Flags; | 622 | item.Flags = m_items[item.ItemID].Flags; |
623 | |||
624 | // If group permissions have been set on, check that the groupID is up to date in case it has | ||
625 | // changed since permissions were last set. | ||
626 | if (item.GroupPermissions != (uint)PermissionMask.None) | ||
627 | item.GroupID = m_part.GroupID; | ||
628 | |||
622 | if (item.AssetID == UUID.Zero) | 629 | if (item.AssetID == UUID.Zero) |
623 | { | 630 | { |
624 | item.AssetID = m_items[item.ItemID].AssetID; | 631 | item.AssetID = m_items[item.ItemID].AssetID; |
@@ -770,6 +777,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
770 | uint everyoneMask = 0; | 777 | uint everyoneMask = 0; |
771 | uint baseMask = item.BasePermissions; | 778 | uint baseMask = item.BasePermissions; |
772 | uint ownerMask = item.CurrentPermissions; | 779 | uint ownerMask = item.CurrentPermissions; |
780 | uint groupMask = item.GroupPermissions; | ||
773 | 781 | ||
774 | invString.AddItemStart(); | 782 | invString.AddItemStart(); |
775 | invString.AddNameValueLine("item_id", item.ItemID.ToString()); | 783 | invString.AddNameValueLine("item_id", item.ItemID.ToString()); |
@@ -779,7 +787,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
779 | 787 | ||
780 | invString.AddNameValueLine("base_mask", Utils.UIntToHexString(baseMask)); | 788 | invString.AddNameValueLine("base_mask", Utils.UIntToHexString(baseMask)); |
781 | invString.AddNameValueLine("owner_mask", Utils.UIntToHexString(ownerMask)); | 789 | invString.AddNameValueLine("owner_mask", Utils.UIntToHexString(ownerMask)); |
782 | invString.AddNameValueLine("group_mask", Utils.UIntToHexString(0)); | 790 | invString.AddNameValueLine("group_mask", Utils.UIntToHexString(groupMask)); |
783 | invString.AddNameValueLine("everyone_mask", Utils.UIntToHexString(everyoneMask)); | 791 | invString.AddNameValueLine("everyone_mask", Utils.UIntToHexString(everyoneMask)); |
784 | invString.AddNameValueLine("next_owner_mask", Utils.UIntToHexString(item.NextPermissions)); | 792 | invString.AddNameValueLine("next_owner_mask", Utils.UIntToHexString(item.NextPermissions)); |
785 | 793 | ||