diff options
author | Vincent Petry <pvince81@owncloud.com> | 2015-03-23 17:41:32 +0100 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2015-03-23 17:41:32 +0100 |
commit | eb894e662523709b2b3915b14354aa6adab03c86 (patch) | |
tree | 054bfcf8118e77a905bad710eab9337f2ba45d3b | |
parent | a9b4f0d8429dbeb612e80b168b6146890bb7843e (diff) | |
download | nextcloud-server-eb894e662523709b2b3915b14354aa6adab03c86.tar.gz nextcloud-server-eb894e662523709b2b3915b14354aa6adab03c86.zip |
Soft fail in CustomPropertiesBackend whenever storage not available
When a storage is not available, it will not fail the whole call any
more but still return a usable file list.
-rw-r--r-- | lib/private/connector/sabre/custompropertiesbackend.php | 4 | ||||
-rw-r--r-- | tests/lib/connector/sabre/custompropertiesbackend.php | 12 |
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/private/connector/sabre/custompropertiesbackend.php b/lib/private/connector/sabre/custompropertiesbackend.php index 6827cb9ae0d..9bd6452674b 100644 --- a/lib/private/connector/sabre/custompropertiesbackend.php +++ b/lib/private/connector/sabre/custompropertiesbackend.php @@ -30,6 +30,7 @@ use Sabre\DAV\PropFind; use Sabre\DAV\PropPatch; use Sabre\DAV\Tree; use Sabre\DAV\Exception\NotFound; +use Sabre\DAV\Exception\ServiceUnavailable; class CustomPropertiesBackend implements BackendInterface { @@ -100,6 +101,9 @@ class CustomPropertiesBackend implements BackendInterface { if (!($node instanceof Node)) { return; } + } catch (ServiceUnavailable $e) { + // might happen for unavailable mount points, skip + return; } catch (NotFound $e) { // in some rare (buggy) cases the node might not be found, // we catch the exception to prevent breaking the whole list with a 404 diff --git a/tests/lib/connector/sabre/custompropertiesbackend.php b/tests/lib/connector/sabre/custompropertiesbackend.php index 8b6d1a90db1..212bece9402 100644 --- a/tests/lib/connector/sabre/custompropertiesbackend.php +++ b/tests/lib/connector/sabre/custompropertiesbackend.php @@ -105,11 +105,16 @@ class CustomPropertiesBackend extends \Test\TestCase { * Test that propFind on a missing file soft fails */ public function testPropFindMissingFileSoftFail() { - $this->tree->expects($this->any()) + $this->tree->expects($this->at(0)) ->method('getNodeForPath') ->with('/dummypath') ->will($this->throwException(new \Sabre\DAV\Exception\NotFound())); + $this->tree->expects($this->at(1)) + ->method('getNodeForPath') + ->with('/dummypath') + ->will($this->throwException(new \Sabre\DAV\Exception\ServiceUnavailable())); + $propFind = new \Sabre\DAV\PropFind( '/dummypath', array( @@ -125,6 +130,11 @@ class CustomPropertiesBackend extends \Test\TestCase { $propFind ); + $this->plugin->propFind( + '/dummypath', + $propFind + ); + // no exception, soft fail $this->assertTrue(true); } |