aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs129
1 files changed, 64 insertions, 65 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 74b4e54..8ec9d55 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -953,80 +953,79 @@ namespace OpenSim.Region.Framework.Scenes
953 953
954 InventoryStringBuilder invString = new InventoryStringBuilder(m_part.UUID, UUID.Zero); 954 InventoryStringBuilder invString = new InventoryStringBuilder(m_part.UUID, UUID.Zero);
955 955
956 lock (m_items) 956 Items.LockItemsForRead(true);
957
958 if (m_inventorySerial == 0) // No inventory
957 { 959 {
958 if (m_inventorySerial == 0) // No inventory 960 client.SendTaskInventory(m_part.UUID, 0, new byte[0]);
959 { 961 return;
960 client.SendTaskInventory(m_part.UUID, 0, new byte[0]); 962 }
961 return;
962 }
963 963
964 client.SendTaskInventory(m_part.UUID, (short)m_inventorySerial, 964 client.SendTaskInventory(m_part.UUID, (short)m_inventorySerial,
965 Util.StringToBytes256(m_inventoryFileName)); 965 Util.StringToBytes256(m_inventoryFileName));
966 966
967 if (!changed) 967 if (!changed)
968 {
969 if (m_inventoryFileData.Length > 2)
968 { 970 {
969 if (m_inventoryFileData.Length > 2) 971 xferManager.AddNewFile(m_inventoryFileName,
970 { 972 m_inventoryFileData);
971 xferManager.AddNewFile(m_inventoryFileName,
972 m_inventoryFileData);
973 }
974 } 973 }
974 }
975 975
976 bool includeAssets = false; 976 bool includeAssets = false;
977 if (m_part.ParentGroup.Scene.Permissions.CanEditObjectInventory(m_part.UUID, client.AgentId)) 977 if (m_part.ParentGroup.Scene.Permissions.CanEditObjectInventory(m_part.UUID, client.AgentId))
978 includeAssets = true; 978 includeAssets = true;
979 979
980 foreach (TaskInventoryItem item in m_items.Values) 980 foreach (TaskInventoryItem item in m_items.Values)
981 { 981 {
982 UUID ownerID = item.OwnerID; 982 UUID ownerID = item.OwnerID;
983 uint everyoneMask = 0; 983 uint everyoneMask = 0;
984 uint baseMask = item.BasePermissions; 984 uint baseMask = item.BasePermissions;
985 uint ownerMask = item.CurrentPermissions; 985 uint ownerMask = item.CurrentPermissions;
986 uint groupMask = item.GroupPermissions; 986 uint groupMask = item.GroupPermissions;
987 987
988 invString.AddItemStart(); 988 invString.AddItemStart();
989 invString.AddNameValueLine("item_id", item.ItemID.ToString()); 989 invString.AddNameValueLine("item_id", item.ItemID.ToString());
990 invString.AddNameValueLine("parent_id", m_part.UUID.ToString()); 990 invString.AddNameValueLine("parent_id", m_part.UUID.ToString());
991 991
992 invString.AddPermissionsStart(); 992 invString.AddPermissionsStart();
993 993
994 invString.AddNameValueLine("base_mask", Utils.UIntToHexString(baseMask)); 994 invString.AddNameValueLine("base_mask", Utils.UIntToHexString(baseMask));
995 invString.AddNameValueLine("owner_mask", Utils.UIntToHexString(ownerMask)); 995 invString.AddNameValueLine("owner_mask", Utils.UIntToHexString(ownerMask));
996 invString.AddNameValueLine("group_mask", Utils.UIntToHexString(groupMask)); 996 invString.AddNameValueLine("group_mask", Utils.UIntToHexString(groupMask));
997 invString.AddNameValueLine("everyone_mask", Utils.UIntToHexString(everyoneMask)); 997 invString.AddNameValueLine("everyone_mask", Utils.UIntToHexString(everyoneMask));
998 invString.AddNameValueLine("next_owner_mask", Utils.UIntToHexString(item.NextPermissions)); 998 invString.AddNameValueLine("next_owner_mask", Utils.UIntToHexString(item.NextPermissions));
999 999
1000 invString.AddNameValueLine("creator_id", item.CreatorID.ToString()); 1000 invString.AddNameValueLine("creator_id", item.CreatorID.ToString());
1001 invString.AddNameValueLine("owner_id", ownerID.ToString()); 1001 invString.AddNameValueLine("owner_id", ownerID.ToString());
1002 1002
1003 invString.AddNameValueLine("last_owner_id", item.LastOwnerID.ToString()); 1003 invString.AddNameValueLine("last_owner_id", item.LastOwnerID.ToString());
1004 1004
1005 invString.AddNameValueLine("group_id", item.GroupID.ToString()); 1005 invString.AddNameValueLine("group_id", item.GroupID.ToString());
1006 invString.AddSectionEnd(); 1006 invString.AddSectionEnd();
1007 1007
1008 if (includeAssets) 1008 if (includeAssets)
1009 invString.AddNameValueLine("asset_id", item.AssetID.ToString()); 1009 invString.AddNameValueLine("asset_id", item.AssetID.ToString());
1010 else 1010 else
1011 invString.AddNameValueLine("asset_id", UUID.Zero.ToString()); 1011 invString.AddNameValueLine("asset_id", UUID.Zero.ToString());
1012 invString.AddNameValueLine("type", TaskInventoryItem.Types[item.Type]); 1012 invString.AddNameValueLine("type", TaskInventoryItem.Types[item.Type]);
1013 invString.AddNameValueLine("inv_type", TaskInventoryItem.InvTypes[item.InvType]); 1013 invString.AddNameValueLine("inv_type", TaskInventoryItem.InvTypes[item.InvType]);
1014 invString.AddNameValueLine("flags", Utils.UIntToHexString(item.Flags)); 1014 invString.AddNameValueLine("flags", Utils.UIntToHexString(item.Flags));
1015 1015
1016 invString.AddSaleStart(); 1016 invString.AddSaleStart();
1017 invString.AddNameValueLine("sale_type", "not"); 1017 invString.AddNameValueLine("sale_type", "not");
1018 invString.AddNameValueLine("sale_price", "0"); 1018 invString.AddNameValueLine("sale_price", "0");
1019 invString.AddSectionEnd(); 1019 invString.AddSectionEnd();
1020 1020
1021 invString.AddNameValueLine("name", item.Name + "|"); 1021 invString.AddNameValueLine("name", item.Name + "|");
1022 invString.AddNameValueLine("desc", item.Description + "|"); 1022 invString.AddNameValueLine("desc", item.Description + "|");
1023 1023
1024 invString.AddNameValueLine("creation_date", item.CreationDate.ToString()); 1024 invString.AddNameValueLine("creation_date", item.CreationDate.ToString());
1025 invString.AddSectionEnd(); 1025 invString.AddSectionEnd();
1026 }
1027 } 1026 }
1028 1027
1029 int count = m_items.Count; 1028 Items.LockItemsForRead(false);
1030 1029
1031 m_inventoryFileData = Utils.StringToBytes(invString.BuildString); 1030 m_inventoryFileData = Utils.StringToBytes(invString.BuildString);
1032 1031