diff options
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index cd01a05..523b7f5 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -904,11 +904,25 @@ namespace OpenSim.Region.Framework.Scenes | |||
904 | } | 904 | } |
905 | } | 905 | } |
906 | 906 | ||
907 | /// <summary> | ||
908 | /// Link an inventory item to an existing item. | ||
909 | /// </summary> | ||
910 | /// <param name="remoteClient"></param> | ||
911 | /// <param name="transActionID"></param> | ||
912 | /// <param name="folderID"></param> | ||
913 | /// <param name="callbackID"></param> | ||
914 | /// <param name="description"></param> | ||
915 | /// <param name="name"></param> | ||
916 | /// <param name="invType"></param> | ||
917 | /// <param name="type">/param> | ||
918 | /// <param name="olditemID"></param> | ||
907 | private void HandleLinkInventoryItem(IClientAPI remoteClient, UUID transActionID, UUID folderID, | 919 | private void HandleLinkInventoryItem(IClientAPI remoteClient, UUID transActionID, UUID folderID, |
908 | uint callbackID, string description, string name, | 920 | uint callbackID, string description, string name, |
909 | sbyte invType, sbyte type, UUID olditemID) | 921 | sbyte invType, sbyte type, UUID olditemID) |
910 | { | 922 | { |
911 | m_log.DebugFormat("[AGENT INVENTORY]: Received request to create inventory item link {0} in folder {1} pointing to {2}", name, folderID, olditemID); | 923 | m_log.DebugFormat( |
924 | "[AGENT INVENTORY]: Received request from {0} to create inventory item link {1} in folder {2} pointing to {3}", | ||
925 | remoteClient.Name, name, folderID, olditemID); | ||
912 | 926 | ||
913 | if (!Permissions.CanCreateUserInventory(invType, remoteClient.AgentId)) | 927 | if (!Permissions.CanCreateUserInventory(invType, remoteClient.AgentId)) |
914 | return; | 928 | return; |
@@ -916,7 +930,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
916 | ScenePresence presence; | 930 | ScenePresence presence; |
917 | if (TryGetScenePresence(remoteClient.AgentId, out presence)) | 931 | if (TryGetScenePresence(remoteClient.AgentId, out presence)) |
918 | { | 932 | { |
919 | // byte[] data = null; | 933 | bool linkAlreadyExists = false; |
934 | List<InventoryItemBase> existingItems = InventoryService.GetFolderItems(remoteClient.AgentId, folderID); | ||
935 | foreach (InventoryItemBase item in existingItems) | ||
936 | if (item.AssetID == olditemID) | ||
937 | linkAlreadyExists = true; | ||
938 | |||
939 | if (linkAlreadyExists) | ||
940 | { | ||
941 | m_log.WarnFormat( | ||
942 | "[AGENT INVENTORY]: Ignoring request from {0} to create item link {1} in folder {2} pointing to {3} since a link already exists", | ||
943 | remoteClient.Name, name, folderID, olditemID); | ||
944 | |||
945 | return; | ||
946 | } | ||
920 | 947 | ||
921 | AssetBase asset = new AssetBase(); | 948 | AssetBase asset = new AssetBase(); |
922 | asset.FullID = olditemID; | 949 | asset.FullID = olditemID; |