diff --git a/synapse/config/experimental.py b/synapse/config/experimental.py
index 72a17e0616..0444ef8244 100644
--- a/synapse/config/experimental.py
+++ b/synapse/config/experimental.py
@@ -75,11 +75,15 @@ class ExperimentalConfig(Config):
)
# MSC3706 (server-side support for partial state in /send_join responses)
+ # Synapse will always serve partial state responses to requests using the stable
+ # query parameter `omit_members`. If this flag is set, Synapse will also serve
+ # partial state responses to requests using the unstable query parameter
+ # `org.matrix.msc3706.partial_state`.
self.msc3706_enabled: bool = experimental.get("msc3706_enabled", False)
# experimental support for faster joins over federation
# (MSC2775, MSC3706, MSC3895)
- # requires a target server with msc3706_enabled enabled.
+ # requires a target server that can provide a partial join response (MSC3706)
self.faster_joins_enabled: bool = experimental.get("faster_joins", False)
# MSC3720 (Account status endpoint)
diff --git a/synapse/federation/transport/server/federation.py b/synapse/federation/transport/server/federation.py
index c0a700905b..17c427387e 100644
--- a/synapse/federation/transport/server/federation.py
+++ b/synapse/federation/transport/server/federation.py
@@ -422,7 +422,7 @@ class FederationV2SendJoinServlet(BaseFederationServerServlet):
server_name: str,
):
super().__init__(hs, authenticator, ratelimiter, server_name)
- self._msc3706_enabled = hs.config.experimental.msc3706_enabled
+ self._read_msc3706_query_param = hs.config.experimental.msc3706_enabled
async def on_PUT(
self,
@@ -436,16 +436,15 @@ class FederationV2SendJoinServlet(BaseFederationServerServlet):
# match those given in content
partial_state = False
- if self._msc3706_enabled:
- # The stable query parameter wins, if it disagrees with the unstable
- # parameter for some reason.
- stable_param = parse_boolean_from_args(query, "omit_members", default=None)
- if stable_param is not None:
- partial_state = stable_param
- else:
- partial_state = parse_boolean_from_args(
- query, "org.matrix.msc3706.partial_state", default=False
- )
+ # The stable query parameter wins, if it disagrees with the unstable
+ # parameter for some reason.
+ stable_param = parse_boolean_from_args(query, "omit_members", default=None)
+ if stable_param is not None:
+ partial_state = stable_param
+ elif self._read_msc3706_query_param:
+ partial_state = parse_boolean_from_args(
+ query, "org.matrix.msc3706.partial_state", default=False
+ )
result = await self.handler.on_send_join_request(
origin, content, room_id, caller_supports_partial_state=partial_state
|