From 3de82bb2af28f56696a79bf41ccffc81385b6e2c Mon Sep 17 00:00:00 2001
From: Erik Johnston <erikj@matrix.org>
Date: Wed, 30 Aug 2023 15:18:34 +0100
Subject: [PATCH] Gracefully handle failing to thumbnail images (#16211)

---
 changelog.d/16211.bugfix          | 1 +
 synapse/__init__.py               | 5 +++++
 synapse/media/media_repository.py | 5 ++++-
 3 files changed, 10 insertions(+), 1 deletion(-)
 create mode 100644 changelog.d/16211.bugfix

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)
 
-- 
GitLab