From 5a20ac9863a4c38c371019efc57281e52f99dca6 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Wed, 26 Sep 2018 10:43:40 +0200 Subject: [PATCH] do not explode when getting permissions from a FailedStorage for instance if a user of an external user backend is not available currently, the whole Files UI would be frozen. Signed-off-by: Arthur Schiwon --- apps/files_sharing/lib/Cache.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/files_sharing/lib/Cache.php b/apps/files_sharing/lib/Cache.php index f3712ead58..bb1467ea82 100644 --- a/apps/files_sharing/lib/Cache.php +++ b/apps/files_sharing/lib/Cache.php @@ -32,6 +32,7 @@ use OC\Files\Cache\FailedCache; use OC\Files\Cache\Wrapper\CacheJail; use OC\Files\Storage\Wrapper\Jail; use OCP\Files\Cache\ICacheEntry; +use OCP\Files\StorageNotAvailableException; /** * Metadata cache for shared files @@ -142,7 +143,14 @@ class Cache extends CacheJail { } else { $entry['path'] = $path; } - $sharePermissions = $this->storage->getPermissions($entry['path']); + + try { + $sharePermissions = $this->storage->getPermissions($entry['path']); + } catch (StorageNotAvailableException $e) { + // thrown by FailedStorage e.g. when the sharer does not exist anymore + // (IDE may say the exception is never thrown – false negative) + $sharePermissions = 0; + } if (isset($entry['permissions'])) { $entry['permissions'] &= $sharePermissions; } else {