summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erikj@matrix.org>2023-08-30 15:18:34 +0100
committerGitHub <noreply@github.com>2023-08-30 15:18:34 +0100
commit3de82bb2af28f56696a79bf41ccffc81385b6e2c (patch)
tree13f12b42ca11ef4ba7ad8c8756bc05f50ed38263
parentFix rare bug that broke looping calls (#16210) (diff)
downloadsynapse-3de82bb2af28f56696a79bf41ccffc81385b6e2c.tar.xz
Gracefully handle failing to thumbnail images (#16211)
-rw-r--r--changelog.d/16211.bugfix1
-rw-r--r--synapse/__init__.py5
-rw-r--r--synapse/media/media_repository.py5
3 files changed, 10 insertions, 1 deletions
diff --git a/changelog.d/16211.bugfix b/changelog.d/16211.bugfix
new file mode 100644
index 0000000000..ab1816386c
--- /dev/null
+++ b/changelog.d/16211.bugfix
@@ -0,0 +1 @@
+Fix a long-standing bug where uploading images would fail if we could not generate thumbnails for them.
diff --git a/synapse/__init__.py b/synapse/__init__.py
index 2f9c22a833..4a9bbc4d57 100644
--- a/synapse/__init__.py
+++ b/synapse/__init__.py
@@ -21,9 +21,14 @@ import os
 import sys
 from typing import Any, Dict
 
+from PIL import ImageFile
+
 from synapse.util.rust import check_rust_lib_up_to_date
 from synapse.util.stringutils import strtobool
 
+# Allow truncated JPEG images to be thumbnailed.
+ImageFile.LOAD_TRUNCATED_IMAGES = True
+
 # Check that we're not running on an unsupported Python version.
 #
 # Note that we use an (unneeded) variable here so that pyupgrade doesn't nuke the
diff --git a/synapse/media/media_repository.py b/synapse/media/media_repository.py
index 4b750c700b..1b7b014f9a 100644
--- a/synapse/media/media_repository.py
+++ b/synapse/media/media_repository.py
@@ -214,7 +214,10 @@ class MediaRepository:
             user_id=auth_user,
         )
 
-        await self._generate_thumbnails(None, media_id, media_id, media_type)
+        try:
+            await self._generate_thumbnails(None, media_id, media_id, media_type)
+        except Exception as e:
+            logger.info("Failed to generate thumbnails: %s", e)
 
         return MXCUri(self.server_name, media_id)