summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/federation/sender/per_destination_queue.py1
-rw-r--r--synapse/handlers/federation.py4
-rw-r--r--synapse/visibility.py6
-rw-r--r--tests/test_visibility.py5
4 files changed, 14 insertions, 2 deletions
diff --git a/synapse/federation/sender/per_destination_queue.py b/synapse/federation/sender/per_destination_queue.py

index 18a6254c71..29345c05b1 100644 --- a/synapse/federation/sender/per_destination_queue.py +++ b/synapse/federation/sender/per_destination_queue.py
@@ -548,6 +548,7 @@ class PerDestinationQueue: new_pdus, redact=False, filter_out_erased_senders=True, + filter_out_partial_state_rooms=True, ) # If we've filtered out all the extremities, fall back to diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py
index f3e7b4ef17..26883b8ca4 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py
@@ -401,6 +401,7 @@ class FederationHandler: events_to_check, redact=False, filter_out_erased_senders=False, + filter_out_partial_state_rooms=False, ) if filtered_extremities: extremities_to_request.append(bp.event_id) @@ -1337,6 +1338,7 @@ class FederationHandler: events, redact=True, filter_out_erased_senders=True, + filter_out_partial_state_rooms=True, ) return events @@ -1373,6 +1375,7 @@ class FederationHandler: [event], redact=True, filter_out_erased_senders=True, + filter_out_partial_state_rooms=True, ) event = events[0] return event @@ -1406,6 +1409,7 @@ class FederationHandler: missing_events, redact=True, filter_out_erased_senders=True, + filter_out_partial_state_rooms=True, ) return missing_events diff --git a/synapse/visibility.py b/synapse/visibility.py
index 46adaa0da1..d943ead6c5 100644 --- a/synapse/visibility.py +++ b/synapse/visibility.py
@@ -579,6 +579,7 @@ async def filter_events_for_server( *, redact: bool, filter_out_erased_senders: bool, + filter_out_partial_state_rooms: bool, ) -> List[EventBase]: """Filter a list of events based on whether the target server is allowed to see them. @@ -604,7 +605,8 @@ async def filter_events_for_server( filter_out_erased_senders: If true, also filter out events whose sender has been erased. This is used e.g. during pagination to decide whether to backfill or not. - + filter_out_partial_state_rooms: If True, also filter out events in partial state + rooms. Returns The filtered events. """ @@ -654,7 +656,7 @@ async def filter_events_for_server( # this check but would base the filtering on an outdated view of the membership events. partial_state_invisible_event_ids: Set[str] = set() - if filter_out_erased_senders: + if filter_out_partial_state_rooms: for e in events: sender_domain = get_domain_from_id(e.sender) if ( diff --git a/tests/test_visibility.py b/tests/test_visibility.py
index 569a01a417..f758232d08 100644 --- a/tests/test_visibility.py +++ b/tests/test_visibility.py
@@ -69,6 +69,7 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase): events_to_filter, redact=True, filter_out_erased_senders=True, + filter_out_partial_state_rooms=True, ) ) @@ -96,6 +97,7 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase): [outlier], redact=True, filter_out_erased_senders=True, + filter_out_partial_state_rooms=True, ) ), [outlier], @@ -112,6 +114,7 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase): [outlier, evt], redact=True, filter_out_erased_senders=True, + filter_out_partial_state_rooms=True, ) ) self.assertEqual(len(filtered), 2, f"expected 2 results, got: {filtered}") @@ -129,6 +132,7 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase): [outlier, evt], redact=True, filter_out_erased_senders=True, + filter_out_partial_state_rooms=True, ) ) self.assertEqual(filtered[0], outlier) @@ -169,6 +173,7 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase): events_to_filter, redact=True, filter_out_erased_senders=True, + filter_out_partial_state_rooms=True, ) )