Convert federation handler to async/await. (#7459)

This commit is contained in:
Patrick Cloke 2020-05-11 15:12:46 -04:00 committed by GitHub
parent be309d99cf
commit 8c8858e124
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 21 deletions

1
changelog.d/7459.misc Normal file
View file

@ -0,0 +1 @@
Convert the federation handler to async/await.

View file

@ -2681,8 +2681,7 @@ class FederationHandler(BaseHandler):
member_handler = self.hs.get_room_member_handler() member_handler = self.hs.get_room_member_handler()
await member_handler.send_membership_event(None, event, context) await member_handler.send_membership_event(None, event, context)
@defer.inlineCallbacks async def add_display_name_to_third_party_invite(
def add_display_name_to_third_party_invite(
self, room_version, event_dict, event, context self, room_version, event_dict, event, context
): ):
key = ( key = (
@ -2690,10 +2689,10 @@ class FederationHandler(BaseHandler):
event.content["third_party_invite"]["signed"]["token"], event.content["third_party_invite"]["signed"]["token"],
) )
original_invite = None original_invite = None
prev_state_ids = yield context.get_prev_state_ids() prev_state_ids = await context.get_prev_state_ids()
original_invite_id = prev_state_ids.get(key) original_invite_id = prev_state_ids.get(key)
if original_invite_id: if original_invite_id:
original_invite = yield self.store.get_event( original_invite = await self.store.get_event(
original_invite_id, allow_none=True original_invite_id, allow_none=True
) )
if original_invite: if original_invite:
@ -2714,14 +2713,13 @@ class FederationHandler(BaseHandler):
builder = self.event_builder_factory.new(room_version, event_dict) builder = self.event_builder_factory.new(room_version, event_dict)
EventValidator().validate_builder(builder) EventValidator().validate_builder(builder)
event, context = yield self.event_creation_handler.create_new_client_event( event, context = await self.event_creation_handler.create_new_client_event(
builder=builder builder=builder
) )
EventValidator().validate_new(event, self.config) EventValidator().validate_new(event, self.config)
return (event, context) return (event, context)
@defer.inlineCallbacks async def _check_signature(self, event, context):
def _check_signature(self, event, context):
""" """
Checks that the signature in the event is consistent with its invite. Checks that the signature in the event is consistent with its invite.
@ -2738,12 +2736,12 @@ class FederationHandler(BaseHandler):
signed = event.content["third_party_invite"]["signed"] signed = event.content["third_party_invite"]["signed"]
token = signed["token"] token = signed["token"]
prev_state_ids = yield context.get_prev_state_ids() prev_state_ids = await context.get_prev_state_ids()
invite_event_id = prev_state_ids.get((EventTypes.ThirdPartyInvite, token)) invite_event_id = prev_state_ids.get((EventTypes.ThirdPartyInvite, token))
invite_event = None invite_event = None
if invite_event_id: if invite_event_id:
invite_event = yield self.store.get_event(invite_event_id, allow_none=True) invite_event = await self.store.get_event(invite_event_id, allow_none=True)
if not invite_event: if not invite_event:
raise AuthError(403, "Could not find invite") raise AuthError(403, "Could not find invite")
@ -2792,7 +2790,7 @@ class FederationHandler(BaseHandler):
raise raise
try: try:
if "key_validity_url" in public_key_object: if "key_validity_url" in public_key_object:
yield self._check_key_revocation( await self._check_key_revocation(
public_key, public_key_object["key_validity_url"] public_key, public_key_object["key_validity_url"]
) )
except Exception: except Exception:
@ -2806,8 +2804,7 @@ class FederationHandler(BaseHandler):
last_exception = e last_exception = e
raise last_exception raise last_exception
@defer.inlineCallbacks async def _check_key_revocation(self, public_key, url):
def _check_key_revocation(self, public_key, url):
""" """
Checks whether public_key has been revoked. Checks whether public_key has been revoked.
@ -2821,7 +2818,7 @@ class FederationHandler(BaseHandler):
for revocation. for revocation.
""" """
try: try:
response = yield self.http_client.get_json(url, {"public_key": public_key}) response = await self.http_client.get_json(url, {"public_key": public_key})
except Exception: except Exception:
raise SynapseError(502, "Third party certificate could not be checked") raise SynapseError(502, "Third party certificate could not be checked")
if "valid" not in response or not response["valid"]: if "valid" not in response or not response["valid"]:
@ -2916,8 +2913,7 @@ class FederationHandler(BaseHandler):
else: else:
user_joined_room(self.distributor, user, room_id) user_joined_room(self.distributor, user, room_id)
@defer.inlineCallbacks async def get_room_complexity(self, remote_room_hosts, room_id):
def get_room_complexity(self, remote_room_hosts, room_id):
""" """
Fetch the complexity of a remote room over federation. Fetch the complexity of a remote room over federation.
@ -2931,12 +2927,12 @@ class FederationHandler(BaseHandler):
""" """
for host in remote_room_hosts: for host in remote_room_hosts:
res = yield self.federation_client.get_room_complexity(host, room_id) res = await self.federation_client.get_room_complexity(host, room_id)
# We got a result, return it. # We got a result, return it.
if res: if res:
defer.returnValue(res) return res
# We fell off the bottom, couldn't get the complexity from anyone. Oh # We fell off the bottom, couldn't get the complexity from anyone. Oh
# well. # well.
defer.returnValue(None) return None

View file

@ -875,8 +875,7 @@ class RoomMemberMasterHandler(RoomMemberHandler):
self.distributor.declare("user_joined_room") self.distributor.declare("user_joined_room")
self.distributor.declare("user_left_room") self.distributor.declare("user_left_room")
@defer.inlineCallbacks async def _is_remote_room_too_complex(self, room_id, remote_room_hosts):
def _is_remote_room_too_complex(self, room_id, remote_room_hosts):
""" """
Check if complexity of a remote room is too great. Check if complexity of a remote room is too great.
@ -888,7 +887,7 @@ class RoomMemberMasterHandler(RoomMemberHandler):
if unable to be fetched if unable to be fetched
""" """
max_complexity = self.hs.config.limit_remote_rooms.complexity max_complexity = self.hs.config.limit_remote_rooms.complexity
complexity = yield self.federation_handler.get_room_complexity( complexity = await self.federation_handler.get_room_complexity(
remote_room_hosts, room_id remote_room_hosts, room_id
) )