summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2016-06-27 21:34:28 +0200
committerThomas Müller <DeepDiver1975@users.noreply.github.com>2016-06-27 21:34:28 +0200
commit88ef163276fc030006a061358f42746b59c489f3 (patch)
tree0298a8dfb2aa254f5e68768975503428a03771d9 /apps
parent3c399be6ecf70fccc3a55fe6c60c5dfc8a7cb1ac (diff)
downloadnextcloud-server-88ef163276fc030006a061358f42746b59c489f3.tar.gz
nextcloud-server-88ef163276fc030006a061358f42746b59c489f3.zip
handle unavailable fed shares while testing for availability (#25277)
* More explicit http status codes * handle unavailable fed shares while testing for availability
Diffstat (limited to 'apps')
-rw-r--r--apps/files_sharing/lib/External/Storage.php19
1 files changed, 17 insertions, 2 deletions
diff --git a/apps/files_sharing/lib/External/Storage.php b/apps/files_sharing/lib/External/Storage.php
index 29b9c7b563c..bc8d898f8ef 100644
--- a/apps/files_sharing/lib/External/Storage.php
+++ b/apps/files_sharing/lib/External/Storage.php
@@ -32,6 +32,7 @@ use OC\Files\Storage\DAV;
use OC\ForbiddenException;
use OCA\FederatedFileSharing\DiscoveryManager;
use OCA\Files_Sharing\ISharedStorage;
+use OCP\AppFramework\Http;
use OCP\Files\NotFoundException;
use OCP\Files\StorageInvalidException;
use OCP\Files\StorageNotAvailableException;
@@ -181,6 +182,20 @@ class Storage extends DAV implements ISharedStorage {
}
}
+ public function test() {
+ try {
+ parent::test();
+ } catch (StorageInvalidException $e) {
+ // check if it needs to be removed
+ $this->checkStorageAvailability();
+ throw $e;
+ } catch (StorageNotAvailableException $e) {
+ // check if it needs to be removed or just temp unavailable
+ $this->checkStorageAvailability();
+ throw $e;
+ }
+ }
+
/**
* Check whether this storage is permanently or temporarily
* unavailable
@@ -310,10 +325,10 @@ class Storage extends DAV implements ISharedStorage {
'connect_timeout' => 10,
]);
} catch (\GuzzleHttp\Exception\RequestException $e) {
- if ($e->getCode() === 401 || $e->getCode() === 403) {
+ if ($e->getCode() === Http::STATUS_UNAUTHORIZED || $e->getCode() === Http::STATUS_FORBIDDEN) {
throw new ForbiddenException();
}
- if ($e->getCode() === 404) {
+ if ($e->getCode() === Http::STATUS_NOT_FOUND) {
throw new NotFoundException();
}
// throw this to be on the safe side: the share will still be visible