Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Fix room_version in on_invite_request flow #6827

Merged
merged 1 commit into from
Feb 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/6827.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Refactoring work in preparation for changing the event redaction algorithm.
13 changes: 8 additions & 5 deletions synapse/federation/federation_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
ReplicationFederationSendEduRestServlet,
ReplicationGetQueryRestServlet,
)
from synapse.types import get_domain_from_id
from synapse.types import JsonDict, get_domain_from_id
from synapse.util import glob_to_regex, unwrapFirstError
from synapse.util.async_helpers import Linearizer, concurrently_execute
from synapse.util.caches.response_cache import ResponseCache
Expand Down Expand Up @@ -396,20 +396,23 @@ async def on_make_join_request(self, origin, room_id, user_id, supported_version
time_now = self._clock.time_msec()
return {"event": pdu.get_pdu_json(time_now), "room_version": room_version}

async def on_invite_request(self, origin, content, room_version):
if room_version not in KNOWN_ROOM_VERSIONS:
async def on_invite_request(
self, origin: str, content: JsonDict, room_version_id: str
):
room_version = KNOWN_ROOM_VERSIONS.get(room_version_id)
if not room_version:
raise SynapseError(
400,
"Homeserver does not support this room version",
Codes.UNSUPPORTED_ROOM_VERSION,
)

format_ver = room_version_to_event_format(room_version)
format_ver = room_version.event_format

pdu = event_from_pdu_json(content, format_ver)
origin_host, _ = parse_server_name(origin)
await self.check_server_matches_acl(origin_host, pdu.room_id)
pdu = await self._check_sigs_and_hash(room_version, pdu)
pdu = await self._check_sigs_and_hash(room_version.identifier, pdu)
ret_pdu = await self.handler.on_invite_request(origin, pdu, room_version)
time_now = self._clock.time_msec()
return {"event": ret_pdu.get_pdu_json(time_now)}
Expand Down
4 changes: 2 additions & 2 deletions synapse/federation/transport/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -579,7 +579,7 @@ async def on_PUT(self, origin, content, query, context, event_id):
# state resolution algorithm, and we don't use that for processing
# invites
content = await self.handler.on_invite_request(
origin, content, room_version=RoomVersions.V1.identifier
origin, content, room_version_id=RoomVersions.V1.identifier
)

# V1 federation API is defined to return a content of `[200, {...}]`
Expand All @@ -606,7 +606,7 @@ async def on_PUT(self, origin, content, query, context, event_id):
event.setdefault("unsigned", {})["invite_room_state"] = invite_room_state

content = await self.handler.on_invite_request(
origin, event, room_version=room_version
origin, event, room_version_id=room_version
)
return 200, content

Expand Down