Skip to content

Commit be1ef42

Browse files
authored
Merge pull request #34712 from nextcloud/backport/34688/stable25
[stable25] Don't crash with outdated share provider on update with the web updater
2 parents d2333d1 + 707fc65 commit be1ef42

File tree

1 file changed

+32
-7
lines changed

1 file changed

+32
-7
lines changed

lib/private/Share20/ProviderFactory.php

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,15 @@
4040
use OCA\FederatedFileSharing\TokenHandler;
4141
use OCA\ShareByMail\Settings\SettingsManager;
4242
use OCA\ShareByMail\ShareByMailProvider;
43+
use OCA\Talk\Share\RoomShareProvider;
4344
use OCP\Defaults;
4445
use OCP\EventDispatcher\IEventDispatcher;
4546
use OCP\IServerContainer;
4647
use OCP\Share\IManager;
4748
use OCP\Share\IProviderFactory;
4849
use OCP\Share\IShare;
4950
use OCP\Share\IShareProvider;
51+
use Psr\Log\LoggerInterface;
5052

5153
/**
5254
* Class ProviderFactory
@@ -257,8 +259,15 @@ protected function getRoomShareProvider() {
257259
}
258260

259261
try {
260-
$this->roomShareProvider = $this->serverContainer->query('\OCA\Talk\Share\RoomShareProvider');
261-
} catch (\OCP\AppFramework\QueryException $e) {
262+
/**
263+
* @psalm-suppress UndefinedClass
264+
*/
265+
$this->roomShareProvider = $this->serverContainer->get(RoomShareProvider::class);
266+
} catch (\Throwable $e) {
267+
$this->serverContainer->get(LoggerInterface::class)->error(
268+
$e->getMessage(),
269+
['exception' => $e]
270+
);
262271
return null;
263272
}
264273
}
@@ -288,9 +297,16 @@ public function getProvider($id) {
288297
}
289298

290299
foreach ($this->registeredShareProviders as $shareProvider) {
291-
/** @var IShareProvider $instance */
292-
$instance = $this->serverContainer->get($shareProvider);
293-
$this->shareProviders[$instance->identifier()] = $instance;
300+
try {
301+
/** @var IShareProvider $instance */
302+
$instance = $this->serverContainer->get($shareProvider);
303+
$this->shareProviders[$instance->identifier()] = $instance;
304+
} catch (\Throwable $e) {
305+
$this->serverContainer->get(LoggerInterface::class)->error(
306+
$e->getMessage(),
307+
['exception' => $e]
308+
);
309+
}
294310
}
295311

296312
if (isset($this->shareProviders[$id])) {
@@ -351,8 +367,17 @@ public function getAllProviders() {
351367
}
352368

353369
foreach ($this->registeredShareProviders as $shareProvider) {
354-
/** @var IShareProvider $instance */
355-
$instance = $this->serverContainer->get($shareProvider);
370+
try {
371+
/** @var IShareProvider $instance */
372+
$instance = $this->serverContainer->get($shareProvider);
373+
} catch (\Throwable $e) {
374+
$this->serverContainer->get(LoggerInterface::class)->error(
375+
$e->getMessage(),
376+
['exception' => $e]
377+
);
378+
continue;
379+
}
380+
356381
if (!isset($this->shareProviders[$instance->identifier()])) {
357382
$this->shareProviders[$instance->identifier()] = $instance;
358383
}

0 commit comments

Comments
 (0)