diff options
author | Björn Schießle <bjoern@schiessle.org> | 2016-08-16 11:40:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-16 11:40:42 +0200 |
commit | 6dc956b1923fbb4071d481f32e6fc8d32fd41ed2 (patch) | |
tree | 7a2b36a34c786a1035a7c9f9af837af7e367cebd /lib | |
parent | dec4ee73c574c32d8443754897f1b231db383649 (diff) | |
parent | c044aa34fa06ecef90dde2f6793e5e4d77f5200b (diff) | |
download | nextcloud-server-6dc956b1923fbb4071d481f32e6fc8d32fd41ed2.tar.gz nextcloud-server-6dc956b1923fbb4071d481f32e6fc8d32fd41ed2.zip |
Merge pull request #886 from nextcloud/capabilities_error_proof
Make the capabilities manager more error proof
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/CapabilitiesManager.php | 21 | ||||
-rw-r--r-- | lib/private/Server.php | 2 |
2 files changed, 18 insertions, 5 deletions
diff --git a/lib/private/CapabilitiesManager.php b/lib/private/CapabilitiesManager.php index 99a37d652a1..159fa97c708 100644 --- a/lib/private/CapabilitiesManager.php +++ b/lib/private/CapabilitiesManager.php @@ -22,15 +22,22 @@ namespace OC; +use OCP\AppFramework\QueryException; use OCP\Capabilities\ICapability; +use OCP\ILogger; class CapabilitiesManager { - /** - * @var \Closure[] - */ + /** @var \Closure[] */ private $capabilities = array(); + /** @var ILogger */ + private $logger; + + public function __construct(ILogger $logger) { + $this->logger = $logger; + } + /** * Get an array of al the capabilities that are registered at this manager * @@ -40,7 +47,13 @@ class CapabilitiesManager { public function getCapabilities() { $capabilities = []; foreach($this->capabilities as $capability) { - $c = $capability(); + try { + $c = $capability(); + } catch (QueryException $e) { + $this->logger->error('CapabilitiesManager: {message}', ['app' => 'core', 'message' => $e->getMessage()]); + continue; + } + if ($c instanceof ICapability) { $capabilities = array_replace_recursive($capabilities, $c->getCapabilities()); } else { diff --git a/lib/private/Server.php b/lib/private/Server.php index d5808d7f17c..03c3633c9f2 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -629,7 +629,7 @@ class Server extends ServerContainer implements IServerContainer { return new Manager(); }); $this->registerService('CapabilitiesManager', function (Server $c) { - $manager = new \OC\CapabilitiesManager(); + $manager = new \OC\CapabilitiesManager($c->getLogger()); $manager->registerCapability(function () use ($c) { return new \OC\OCS\CoreCapabilities($c->getConfig()); }); |