Skip to content

Commit

Permalink
Add support for via query parameter from MSC4156 (#17322)
Browse files Browse the repository at this point in the history
This adds support for the `via` query parameter from
matrix-org/matrix-spec-proposals#4156.
  • Loading branch information
Johennes committed Jun 18, 2024
1 parent 1c7d85f commit 79767a1
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 0 deletions.
1 change: 1 addition & 0 deletions changelog.d/17322.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add support for via query parameter from MSC415.
3 changes: 3 additions & 0 deletions synapse/config/experimental.py
Original file line number Diff line number Diff line change
Expand Up @@ -439,3 +439,6 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:

# MSC4151: Report room API (Client-Server API)
self.msc4151_enabled: bool = experimental.get("msc4151_enabled", False)

# MSC4156: Migrate server_name to via
self.msc4156_enabled: bool = experimental.get("msc4156_enabled", False)
8 changes: 8 additions & 0 deletions synapse/rest/client/knock.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ def __init__(self, hs: "HomeServer"):
super().__init__()
self.room_member_handler = hs.get_room_member_handler()
self.auth = hs.get_auth()
self._support_via = hs.config.experimental.msc4156_enabled

async def on_POST(
self,
Expand All @@ -74,6 +75,13 @@ async def on_POST(
remote_room_hosts = parse_strings_from_args(
args, "server_name", required=False
)
if self._support_via:
remote_room_hosts = parse_strings_from_args(
args,
"org.matrix.msc4156.via",
default=remote_room_hosts,
required=False,
)
elif RoomAlias.is_valid(room_identifier):
handler = self.room_member_handler
room_alias = RoomAlias.from_string(room_identifier)
Expand Down
8 changes: 8 additions & 0 deletions synapse/rest/client/room.py
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,7 @@ def __init__(self, hs: "HomeServer"):
super().__init__(hs)
super(ResolveRoomIdMixin, self).__init__(hs) # ensure the Mixin is set up
self.auth = hs.get_auth()
self._support_via = hs.config.experimental.msc4156_enabled

def register(self, http_server: HttpServer) -> None:
# /join/$room_identifier[/$txn_id]
Expand All @@ -435,6 +436,13 @@ async def _do(
# twisted.web.server.Request.args is incorrectly defined as Optional[Any]
args: Dict[bytes, List[bytes]] = request.args # type: ignore
remote_room_hosts = parse_strings_from_args(args, "server_name", required=False)
if self._support_via:
remote_room_hosts = parse_strings_from_args(
args,
"org.matrix.msc4156.via",
default=remote_room_hosts,
required=False,
)
room_id, remote_room_hosts = await self.resolve_room_id(
room_identifier,
remote_room_hosts,
Expand Down

0 comments on commit 79767a1

Please sign in to comment.