From 325be6627bf78df347ac3af52a0acabc7415b578 Mon Sep 17 00:00:00 2001 From: Carl Schwan Date: Mon, 20 Dec 2021 15:20:52 +0100 Subject: [PATCH] Handle external share with invalid host remoteIsOwnCloud might throw an exception when the host is localhost. Handle this case instead of aborting completely. The behavior is the same as that is done 10 lines under it Signed-off-by: Carl Schwan --- apps/files_sharing/lib/External/Storage.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/files_sharing/lib/External/Storage.php b/apps/files_sharing/lib/External/Storage.php index 7d9e8f31c98c3..67df60cb55f65 100644 --- a/apps/files_sharing/lib/External/Storage.php +++ b/apps/files_sharing/lib/External/Storage.php @@ -44,6 +44,7 @@ use OCP\Files\Storage\IDisableEncryptionStorage; use OCP\Files\StorageInvalidException; use OCP\Files\StorageNotAvailableException; +use OCP\Http\Client\LocalServerException; class Storage extends DAV implements ISharedStorage, IDisableEncryptionStorage { /** @var ICloudId */ @@ -314,9 +315,16 @@ public function getShareInfo() { $token = $this->getToken(); $password = $this->getPassword(); - // If remote is not an ownCloud do not try to get any share info - if (!$this->remoteIsOwnCloud()) { - return ['status' => 'unsupported']; + try { + // If remote is not an ownCloud do not try to get any share info + if (!$this->remoteIsOwnCloud()) { + return ['status' => 'unsupported']; + } + } catch (LocalServerException $e) { + // throw this to be on the safe side: the share will still be visible + // in the UI in case the failure is intermittent, and the user will + // be able to decide whether to remove it if it's really gone + throw new StorageNotAvailableException(); } $url = rtrim($remote, '/') . '/index.php/apps/files_sharing/shareinfo?t=' . $token;