diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs index c14e89fb7c..01d9aadf8c 100644 --- a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs +++ b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs @@ -472,6 +472,17 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction m_transactions.RemoveXferUploader(m_transactionID); } + private int checkLibrary(UUID itemID) + { + ILibraryService m_library = m_Scene.RequestModuleInterface(); + InventoryItemBase item = null; + if (m_library != null) + item = m_library.LibraryRootFolder.FindAsset(itemID); + + if (item == null) + return 0; + return (int)item.CurrentPermissions; + } private void ValidateAssets() { @@ -527,6 +538,9 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction else { int perms = m_Scene.InventoryService.GetAssetPermissions(ourClient.AgentId, tx); + if (perms == 0) + perms = checkLibrary(tx); + int full = (int)(PermissionMask.Modify | PermissionMask.Transfer | PermissionMask.Copy); if ((perms & full) != full)