Stop setting the outlier flag for things that aren't (#10614)

Marking things as outliers to inhibit pushes is a sledgehammer to crack a
nut. Move the test further down the stack so that we just inhibit the thing we
want.
This commit is contained in:
Richard van der Hoff 2021-08-17 13:13:42 +01:00 committed by GitHub
parent 642a42edde
commit 272b89d547
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 7 deletions

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

@ -0,0 +1 @@
Clean up some of the federation event authentication code for clarity.

View file

@ -293,13 +293,7 @@ class FederationHandler(BaseHandler):
prevs = set(pdu.prev_event_ids()) prevs = set(pdu.prev_event_ids())
seen = await self.store.have_events_in_timeline(prevs) seen = await self.store.have_events_in_timeline(prevs)
if min_depth is not None and pdu.depth < min_depth: if min_depth is not None and pdu.depth > min_depth:
# This is so that we don't notify the user about this
# message, to work around the fact that some events will
# reference really really old events we really don't want to
# send to the clients.
pdu.internal_metadata.outlier = True
elif min_depth is not None and pdu.depth > min_depth:
missing_prevs = prevs - seen missing_prevs = prevs - seen
if sent_to_us_directly and missing_prevs: if sent_to_us_directly and missing_prevs:
# If we're missing stuff, ensure we only fetch stuff one # If we're missing stuff, ensure we only fetch stuff one
@ -2375,6 +2369,7 @@ class FederationHandler(BaseHandler):
not event.internal_metadata.is_outlier() not event.internal_metadata.is_outlier()
and not backfilled and not backfilled
and not context.rejected and not context.rejected
and (await self.store.get_min_depth(event.room_id)) <= event.depth
): ):
await self.action_generator.handle_push_actions_for_event( await self.action_generator.handle_push_actions_for_event(
event, context event, context