summaryrefslogtreecommitdiffstats
path: root/lib/Sabre/Album/PropFindPlugin.php
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@protonmail.com>2022-09-13 12:29:05 +0200
committerJohn Molakvoæ <skjnldsv@protonmail.com>2022-09-13 12:29:27 +0200
commit8f1003f132d85bfd35b65ec5f50652f70a7f99be (patch)
tree2e2585b432c7dedd6551b8a084884244b23afeac /lib/Sabre/Album/PropFindPlugin.php
parent6c24c0d4e799df5fdb3c8b8f8401147c5c2aa07e (diff)
Catch invalid fileInfo in propFind
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Diffstat (limited to 'lib/Sabre/Album/PropFindPlugin.php')
-rw-r--r--lib/Sabre/Album/PropFindPlugin.php15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/Sabre/Album/PropFindPlugin.php b/lib/Sabre/Album/PropFindPlugin.php
index 82764954..303cb7ed 100644
--- a/lib/Sabre/Album/PropFindPlugin.php
+++ b/lib/Sabre/Album/PropFindPlugin.php
@@ -34,6 +34,7 @@ use Sabre\DAV\PropPatch;
use Sabre\DAV\Server;
use Sabre\DAV\ServerPlugin;
use Sabre\DAV\Tree;
+use OCP\Files\NotFoundException;
class PropFindPlugin extends ServerPlugin {
public const FILE_NAME_PROPERTYNAME = '{http://nextcloud.org/ns}file-name';
@@ -77,14 +78,22 @@ class PropFindPlugin extends ServerPlugin {
public function propFind(PropFind $propFind, INode $node): void {
if ($node instanceof AlbumPhoto) {
+ // Checking if the node is trulely available and ignoring if not
+ // Should be pre-emptively handled by the NodeDeletedEvent
+ try {
+ $fileInfo = $node->getFileInfo();
+ } catch (NotFoundException $e) {
+ return;
+ }
+
$propFind->handle(FilesPlugin::INTERNAL_FILEID_PROPERTYNAME, fn () => $node->getFile()->getFileId());
$propFind->handle(FilesPlugin::GETETAG_PROPERTYNAME, fn () => $node->getETag());
$propFind->handle(self::FILE_NAME_PROPERTYNAME, fn () => $node->getFile()->getName());
- $propFind->handle(self::REALPATH_PROPERTYNAME, fn () => $node->getFileInfo()->getPath());
+ $propFind->handle(self::REALPATH_PROPERTYNAME, fn () => $fileInfo->getPath());
$propFind->handle(self::FAVORITE_PROPERTYNAME, fn () => $node->isFavorite() ? 1 : 0);
- $propFind->handle(FilesPlugin::HAS_PREVIEW_PROPERTYNAME, function () use ($node) {
- return json_encode($this->previewManager->isAvailable($node->getFileInfo()));
+ $propFind->handle(FilesPlugin::HAS_PREVIEW_PROPERTYNAME, function () use ($fileInfo) {
+ return json_encode($this->previewManager->isAvailable($fileInfo));
});
if ($this->metadataEnabled) {