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

Commit

Permalink
Fix room_version in on_invite_request flow
Browse files Browse the repository at this point in the history
I messed this up a bit in #6805, but fortunately we weren't actually doing
anything with the room_version so it didn't matter that it was a str not a RoomVersion.
  • Loading branch information
richvdh committed Jan 31, 2020
1 parent 68ef7eb commit 72456f6
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 7 deletions.
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

0 comments on commit 72456f6

Please sign in to comment.