Rebuild event auth when rebuilding an event after a call to a `ThirdPartyEventRules` module (#10316)

Because modules might send extra state events when processing an event (e.g. matrix-org/synapse-dinsic#100), and in some cases these extra events might get dropped if we don't recalculate the initial event's auth.
This commit is contained in:
Brendan Abolivier 2021-07-08 13:00:05 +02:00 committed by GitHub
parent 189652b2fe
commit 225be77787
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 4 deletions

1
changelog.d/10316.misc Normal file
View File

@ -0,0 +1 @@
Rebuild event context and auth when processing specific results from `ThirdPartyEventRules` modules.

View File

@ -1594,11 +1594,13 @@ class EventCreationHandler:
for k, v in original_event.internal_metadata.get_dict().items(): for k, v in original_event.internal_metadata.get_dict().items():
setattr(builder.internal_metadata, k, v) setattr(builder.internal_metadata, k, v)
# the event type hasn't changed, so there's no point in re-calculating the # modules can send new state events, so we re-calculate the auth events just in
# auth events. # case.
prev_event_ids = await self.store.get_prev_events_for_room(builder.room_id)
event = await builder.build( event = await builder.build(
prev_event_ids=original_event.prev_event_ids(), prev_event_ids=prev_event_ids,
auth_event_ids=original_event.auth_event_ids(), auth_event_ids=None,
) )
# we rebuild the event context, to be on the safe side. If nothing else, # we rebuild the event context, to be on the safe side. If nothing else,