From 956dd855f9f53b3b37e99b77dd725547510dd084 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Sat, 5 Mar 2016 14:33:11 +0100 Subject: [PATCH] WebDAV: return null, if file size could not be determined e.g. due to invalid file headers --- .../frontend/webdav/jackrabbitservlet/DavFile.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavFile.java b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavFile.java index cab2baf4b..5e471a00d 100644 --- a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavFile.java +++ b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/jackrabbitservlet/DavFile.java @@ -32,11 +32,15 @@ import org.cryptomator.filesystem.File; import org.cryptomator.filesystem.Folder; import org.cryptomator.filesystem.ReadableFile; import org.cryptomator.filesystem.jackrabbit.FileLocator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.common.io.ByteStreams; class DavFile extends DavNode { + private static final Logger LOG = LoggerFactory.getLogger(DavFile.class); + public DavFile(FilesystemResourceFactory factory, LockManager lockManager, DavSession session, FileLocator node) { super(factory, lockManager, session, node); } @@ -128,7 +132,7 @@ class DavFile extends DavNode { @Override public DavProperty getProperty(DavPropertyName name) { if (DavPropertyName.GETCONTENTLENGTH.equals(name)) { - return sizeProperty().get(); + return sizeProperty().orElse(null); } else { return super.getProperty(name); } @@ -147,6 +151,9 @@ class DavFile extends DavNode { if (node.exists()) { try (ReadableFile src = node.openReadable()) { return Optional.of(new DefaultDavProperty(DavPropertyName.GETCONTENTLENGTH, src.size())); + } catch (RuntimeException e) { + LOG.warn("Could not determine file size of " + getResourcePath(), e); + return Optional.empty(); } } else { return Optional.empty();