diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2018-01-22 13:57:00 +0100 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2018-01-22 13:57:00 +0100 |
commit | 8703df323392f8aa11c1c232a04be49c44f090bf (patch) | |
tree | 8eddd6618b02ece30539a27d093317f42e329696 /lib/private/Preview/Generator.php | |
parent | 1194e4c2bd6da09c975935d9f139052cfff9091e (diff) | |
download | nextcloud-server-8703df323392f8aa11c1c232a04be49c44f090bf.tar.gz nextcloud-server-8703df323392f8aa11c1c232a04be49c44f090bf.zip |
If the preview is size 0 it is invalid
* delete it
* throw a NotFound Exception
- This should a proper 404 to the user
- Next time it is then regenerated
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'lib/private/Preview/Generator.php')
-rw-r--r-- | lib/private/Preview/Generator.php | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/private/Preview/Generator.php b/lib/private/Preview/Generator.php index 60b7536d074..08f6b604eca 100644 --- a/lib/private/Preview/Generator.php +++ b/lib/private/Preview/Generator.php @@ -110,6 +110,11 @@ class Generator { // Get the max preview and infer the max preview sizes from that $maxPreview = $this->getMaxPreview($previewFolder, $file, $mimeType); + if ($maxPreview->getSize() === 0) { + $maxPreview->delete(); + throw new NotFoundException('Max preview size 0, invalid!'); + } + list($maxWidth, $maxHeight) = $this->getPreviewSize($maxPreview); // If both width and heigth are -1 we just want the max preview @@ -129,15 +134,20 @@ class Generator { // Try to get a cached preview. Else generate (and store) one try { try { - $file = $this->getCachedPreview($previewFolder, $width, $height, $crop, $maxPreview->getMimeType()); + $preview = $this->getCachedPreview($previewFolder, $width, $height, $crop, $maxPreview->getMimeType()); } catch (NotFoundException $e) { - $file = $this->generatePreview($previewFolder, $maxPreview, $width, $height, $crop, $maxWidth, $maxHeight); + $preview = $this->generatePreview($previewFolder, $maxPreview, $width, $height, $crop, $maxWidth, $maxHeight); } } catch (\InvalidArgumentException $e) { throw new NotFoundException(); } - return $file; + if ($preview->getSize() === 0) { + $preview->delete(); + throw new NotFoundException('Cached preview size 0, invalid!'); + } + + return $preview; } /** |