remote join processing: get create event from state, not auth_chain (#12039)

A follow-up to #12005, in which I apparently missed that there are a bunch of other places that assume the create event is in the auth chain.
This commit is contained in:
Richard van der Hoff 2022-02-21 19:27:35 +00:00 committed by GitHub
parent a85dde3445
commit 3070af4809
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 5 deletions

View file

@ -870,13 +870,15 @@ class FederationClient(FederationBase):
for s in signed_state:
s.internal_metadata = copy.deepcopy(s.internal_metadata)
# double-check that the same create event has ended up in the auth chain
# double-check that the auth chain doesn't include a different create event
auth_chain_create_events = [
e.event_id
for e in signed_auth
if (e.type, e.state_key) == (EventTypes.Create, "")
]
if auth_chain_create_events != [create_event.event_id]:
if auth_chain_create_events and auth_chain_create_events != [
create_event.event_id
]:
raise InvalidResponseError(
"Unexpected create event(s) in auth chain: %s"
% (auth_chain_create_events,)