diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/Agent')
-rw-r--r-- | OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs index c14e89f..01d9aad 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 | |||
472 | m_transactions.RemoveXferUploader(m_transactionID); | 472 | m_transactions.RemoveXferUploader(m_transactionID); |
473 | } | 473 | } |
474 | 474 | ||
475 | private int checkLibrary(UUID itemID) | ||
476 | { | ||
477 | ILibraryService m_library = m_Scene.RequestModuleInterface<ILibraryService>(); | ||
478 | InventoryItemBase item = null; | ||
479 | if (m_library != null) | ||
480 | item = m_library.LibraryRootFolder.FindAsset(itemID); | ||
481 | |||
482 | if (item == null) | ||
483 | return 0; | ||
484 | return (int)item.CurrentPermissions; | ||
485 | } | ||
475 | 486 | ||
476 | private void ValidateAssets() | 487 | private void ValidateAssets() |
477 | { | 488 | { |
@@ -527,6 +538,9 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction | |||
527 | else | 538 | else |
528 | { | 539 | { |
529 | int perms = m_Scene.InventoryService.GetAssetPermissions(ourClient.AgentId, tx); | 540 | int perms = m_Scene.InventoryService.GetAssetPermissions(ourClient.AgentId, tx); |
541 | if (perms == 0) | ||
542 | perms = checkLibrary(tx); | ||
543 | |||
530 | int full = (int)(PermissionMask.Modify | PermissionMask.Transfer | PermissionMask.Copy); | 544 | int full = (int)(PermissionMask.Modify | PermissionMask.Transfer | PermissionMask.Copy); |
531 | 545 | ||
532 | if ((perms & full) != full) | 546 | if ((perms & full) != full) |