diff --git a/synapse/rest/media/v1/media_storage.py b/synapse/rest/media/v1/media_storage.py
index 5681677fc9..4827cb2a3f 100644
--- a/synapse/rest/media/v1/media_storage.py
+++ b/synapse/rest/media/v1/media_storage.py
@@ -143,12 +143,9 @@ class MediaStorage:
"""
path = self._file_info_to_path(file_info)
- local_path = os.path.join(self.local_media_directory, path)
- if os.path.exists(local_path):
- return FileResponder(open(local_path, "rb"))
- # Fallback for paths without method names
- # Should be removed in the future
+ # fallback for remote thumbnails with no method in the filename
+ legacy_path = None
if file_info.thumbnail and file_info.server_name:
legacy_path = self.filepaths.remote_media_thumbnail_rel_legacy(
server_name=file_info.server_name,
@@ -157,8 +154,19 @@ class MediaStorage:
height=file_info.thumbnail_height,
content_type=file_info.thumbnail_type,
)
+
+ local_path = os.path.join(self.local_media_directory, path)
+ if os.path.exists(local_path):
+ logger.debug("responding with local file %s", local_path)
+ return FileResponder(open(local_path, "rb"))
+
+ if legacy_path:
+ logger.debug(
+ "local file %s did not exist; checking legacy name", local_path
+ )
legacy_local_path = os.path.join(self.local_media_directory, legacy_path)
if os.path.exists(legacy_local_path):
+ logger.debug("responding with local file %s", legacy_local_path)
return FileResponder(open(legacy_local_path, "rb"))
for provider in self.storage_providers:
@@ -166,6 +174,14 @@ class MediaStorage:
if res:
logger.debug("Streaming %s from %s", path, provider)
return res
+ if legacy_path:
+ logger.debug(
+ "Provider %s did not find %s; checking legacy name", provider, path
+ )
+ res = await provider.fetch(legacy_path, file_info)
+ if res:
+ logger.debug("Streaming %s from %s", legacy_path, provider)
+ return res
return None
|