Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2022-01-03 11:12:27 +0300
committerCarl Schwan <carl@carlschwan.eu>2022-01-06 20:03:21 +0300
commit0b15da3c250c0d430ff84cc973ac647a537a85e2 (patch)
tree3dd5900006a5aa0e1ec5fe0739984b24fdd99d35
parentf9b06def78c60e92c2128a9e1b38074986ff78c6 (diff)
Handle LocalServerException when scanning external shares
When remoteIsOwnCloud trows LocalServerException, the storage is unavailable and instead of crashing the scanner, ignore the specific storage. Signed-off-by: Carl Schwan <carl@carlschwan.eu>
-rw-r--r--apps/files_sharing/lib/External/Scanner.php13
1 files changed, 11 insertions, 2 deletions
diff --git a/apps/files_sharing/lib/External/Scanner.php b/apps/files_sharing/lib/External/Scanner.php
index 54d5a33d517..cfde56103da 100644
--- a/apps/files_sharing/lib/External/Scanner.php
+++ b/apps/files_sharing/lib/External/Scanner.php
@@ -29,6 +29,8 @@ use OC\ForbiddenException;
use OCP\Files\NotFoundException;
use OCP\Files\StorageInvalidException;
use OCP\Files\StorageNotAvailableException;
+use OCP\Http\Client\LocalServerException;
+use Psr\Log\LoggerInterface;
class Scanner extends \OC\Files\Cache\Scanner {
/** @var \OCA\Files_Sharing\External\Storage */
@@ -36,8 +38,15 @@ class Scanner extends \OC\Files\Cache\Scanner {
/** {@inheritDoc} */
public function scan($path, $recursive = self::SCAN_RECURSIVE, $reuse = -1, $lock = true) {
- if (!$this->storage->remoteIsOwnCloud()) {
- return parent::scan($path, $recursive, $reuse, $lock);
+ try {
+ if (!$this->storage->remoteIsOwnCloud()) {
+ return parent::scan($path, $recursive, $reuse, $lock);
+ }
+ } catch (LocalServerException $e) {
+ // Scanner doesn't have dependency injection
+ \OC::$server->get(LoggerInterface::class)
+ ->warning('Trying to scan files inside invalid external storage: ' . $this->storage->getRemote() . ' for mountpoint ' . $this->storage->getMountPoint() . ' and id ' . $this->storage->getId());
+ return;
}
$this->scanAll();