Simplify room_version handling in FederationClient.send_invite

This commit is contained in:
Richard van der Hoff 2020-02-05 17:35:09 +00:00
parent f84700fba8
commit ee0525b2b2

View file

@ -665,7 +665,7 @@ class FederationClient(FederationBase):
async def send_invite( async def send_invite(
self, destination: str, room_id: str, event_id: str, pdu: EventBase, self, destination: str, room_id: str, event_id: str, pdu: EventBase,
) -> EventBase: ) -> EventBase:
room_version = await self.store.get_room_version_id(room_id) room_version = await self.store.get_room_version(room_id)
content = await self._do_send_invite(destination, pdu, room_version) content = await self._do_send_invite(destination, pdu, room_version)
@ -673,20 +673,17 @@ class FederationClient(FederationBase):
logger.debug("Got response to send_invite: %s", pdu_dict) logger.debug("Got response to send_invite: %s", pdu_dict)
room_version = await self.store.get_room_version_id(room_id) pdu = event_from_pdu_json(pdu_dict, room_version.event_format)
format_ver = room_version_to_event_format(room_version)
pdu = event_from_pdu_json(pdu_dict, format_ver)
# Check signatures are correct. # Check signatures are correct.
pdu = await self._check_sigs_and_hash(room_version, pdu) pdu = await self._check_sigs_and_hash(room_version.identifier, pdu)
# FIXME: We should handle signature failures more gracefully. # FIXME: We should handle signature failures more gracefully.
return pdu return pdu
async def _do_send_invite( async def _do_send_invite(
self, destination: str, pdu: EventBase, room_version: str self, destination: str, pdu: EventBase, room_version: RoomVersion
) -> JsonDict: ) -> JsonDict:
"""Actually sends the invite, first trying v2 API and falling back to """Actually sends the invite, first trying v2 API and falling back to
v1 API if necessary. v1 API if necessary.
@ -703,7 +700,7 @@ class FederationClient(FederationBase):
event_id=pdu.event_id, event_id=pdu.event_id,
content={ content={
"event": pdu.get_pdu_json(time_now), "event": pdu.get_pdu_json(time_now),
"room_version": room_version, "room_version": room_version.identifier,
"invite_room_state": pdu.unsigned.get("invite_room_state", []), "invite_room_state": pdu.unsigned.get("invite_room_state", []),
}, },
) )
@ -721,8 +718,7 @@ class FederationClient(FederationBase):
# Otherwise, we assume that the remote server doesn't understand # Otherwise, we assume that the remote server doesn't understand
# the v2 invite API. That's ok provided the room uses old-style event # the v2 invite API. That's ok provided the room uses old-style event
# IDs. # IDs.
v = KNOWN_ROOM_VERSIONS.get(room_version) if room_version.event_format != EventFormatVersions.V1:
if v.event_format != EventFormatVersions.V1:
raise SynapseError( raise SynapseError(
400, 400,
"User's homeserver does not support this room version", "User's homeserver does not support this room version",