diff --git a/CHANGES.md b/CHANGES.md
index cbd8f1062e..8279960b5b 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,20 @@
+# Synapse 1.111.0rc2 (2024-07-10)
+
+### Bugfixes
+
+- Fix bug where using `synapse.app.media_repository` worker configuration would break the new media endpoints. ([\#17420](https://github.com/element-hq/synapse/issues/17420))
+
+### Improved Documentation
+
+- Document the new federation media worker endpoints in the [upgrade notes](https://element-hq.github.io/synapse/v1.111/upgrade.html) and [worker docs](https://element-hq.github.io/synapse/v1.111/workers.html). ([\#17421](https://github.com/element-hq/synapse/issues/17421))
+
+### Internal Changes
+
+- Route authenticated federation media requests to media repository workers in Complement tests. ([\#17422](https://github.com/element-hq/synapse/issues/17422))
+
+
+
+
# Synapse 1.111.0rc1 (2024-07-09)
### Features
diff --git a/debian/changelog b/debian/changelog
index 5fc9e10a29..0f3dcc64e6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+matrix-synapse-py3 (1.111.0~rc2) stable; urgency=medium
+
+ * New synapse release 1.111.0rc2.
+
+ -- Synapse Packaging team <packages@matrix.org> Wed, 10 Jul 2024 08:46:54 +0000
+
matrix-synapse-py3 (1.111.0~rc1) stable; urgency=medium
* New synapse release 1.111.0rc1.
diff --git a/docker/configure_workers_and_start.py b/docker/configure_workers_and_start.py
index b6690f3404..15d8d7b558 100755
--- a/docker/configure_workers_and_start.py
+++ b/docker/configure_workers_and_start.py
@@ -126,6 +126,7 @@ WORKERS_CONFIG: Dict[str, Dict[str, Any]] = {
"^/_synapse/admin/v1/media/.*$",
"^/_synapse/admin/v1/quarantine_media/.*$",
"^/_matrix/client/v1/media/.*$",
+ "^/_matrix/federation/v1/media/.*$",
],
# The first configured media worker will run the media background jobs
"shared_extra_conf": {
diff --git a/docs/upgrade.md b/docs/upgrade.md
index cf53f56b06..52b1adbe90 100644
--- a/docs/upgrade.md
+++ b/docs/upgrade.md
@@ -119,13 +119,14 @@ stacking them up. You can monitor the currently running background updates with
# Upgrading to v1.111.0
-## New worker endpoints for authenticated client media
+## New worker endpoints for authenticated client and federation media
[Media repository workers](./workers.md#synapseappmedia_repository) handling
-Media APIs can now handle the following endpoint pattern:
+Media APIs can now handle the following endpoint patterns:
```
^/_matrix/client/v1/media/.*$
+^/_matrix/federation/v1/media/.*$
```
Please update your reverse proxy configuration.
diff --git a/docs/workers.md b/docs/workers.md
index 22fde488a9..fbf539fa7e 100644
--- a/docs/workers.md
+++ b/docs/workers.md
@@ -740,6 +740,7 @@ Handles the media repository. It can handle all endpoints starting with:
/_matrix/media/
/_matrix/client/v1/media/
+ /_matrix/federation/v1/media/
... and the following regular expressions matching media-specific administration APIs:
diff --git a/pyproject.toml b/pyproject.toml
index 0b1f03bb81..41de90f9f6 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -97,7 +97,7 @@ module-name = "synapse.synapse_rust"
[tool.poetry]
name = "matrix-synapse"
-version = "1.111.0rc1"
+version = "1.111.0rc2"
description = "Homeserver for the Matrix decentralised comms protocol"
authors = ["Matrix.org Team and Contributors <packages@matrix.org>"]
license = "AGPL-3.0-or-later"
diff --git a/synapse/federation/transport/server/__init__.py b/synapse/federation/transport/server/__init__.py
index 5f997040d0..72599bb204 100644
--- a/synapse/federation/transport/server/__init__.py
+++ b/synapse/federation/transport/server/__init__.py
@@ -321,7 +321,7 @@ def register_servlets(
servletclass == FederationMediaDownloadServlet
or servletclass == FederationMediaThumbnailServlet
):
- if not hs.config.server.enable_media_repo:
+ if not hs.config.media.can_load_media_repo:
continue
servletclass(
diff --git a/synapse/rest/__init__.py b/synapse/rest/__init__.py
index c94d454a28..1aa9ea3877 100644
--- a/synapse/rest/__init__.py
+++ b/synapse/rest/__init__.py
@@ -145,7 +145,7 @@ class ClientRestResource(JsonResource):
password_policy.register_servlets(hs, client_resource)
knock.register_servlets(hs, client_resource)
appservice_ping.register_servlets(hs, client_resource)
- if hs.config.server.enable_media_repo:
+ if hs.config.media.can_load_media_repo:
from synapse.rest.client import media
media.register_servlets(hs, client_resource)
|