summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Robertson <davidr@element.io>2023-03-10 11:58:24 +0000
committerDavid Robertson <davidr@element.io>2023-03-10 12:00:48 +0000
commit909eecb34868b2f93ff89c3e2afc9c32a3106c8a (patch)
treea250a3440f9b295ccab30f9d9d9be0b243133aca
parentTrack a set of strings, not EventBases (diff)
downloadsynapse-909eecb34868b2f93ff89c3e2afc9c32a3106c8a.tar.xz
Require explicit boolean options from callers
-rw-r--r--synapse/federation/sender/per_destination_queue.py1
-rw-r--r--synapse/handlers/federation.py21
-rw-r--r--synapse/visibility.py5
-rw-r--r--tests/test_visibility.py35
4 files changed, 52 insertions, 10 deletions
diff --git a/synapse/federation/sender/per_destination_queue.py b/synapse/federation/sender/per_destination_queue.py
index ffc9d95ee7..18a6254c71 100644
--- a/synapse/federation/sender/per_destination_queue.py
+++ b/synapse/federation/sender/per_destination_queue.py
@@ -547,6 +547,7 @@ class PerDestinationQueue:
                         self._server_name,
                         new_pdus,
                         redact=False,
+                        filter_out_erased_senders=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 00448560f6..f3e7b4ef17 100644
--- a/synapse/handlers/federation.py
+++ b/synapse/handlers/federation.py
@@ -1331,7 +1331,12 @@ class FederationHandler:
         )
 
         events = await filter_events_for_server(
-            self._storage_controllers, origin, self.server_name, events
+            self._storage_controllers,
+            origin,
+            self.server_name,
+            events,
+            redact=True,
+            filter_out_erased_senders=True,
         )
 
         return events
@@ -1362,7 +1367,12 @@ class FederationHandler:
         await self._event_auth_handler.assert_host_in_room(event.room_id, origin)
 
         events = await filter_events_for_server(
-            self._storage_controllers, origin, self.server_name, [event]
+            self._storage_controllers,
+            origin,
+            self.server_name,
+            [event],
+            redact=True,
+            filter_out_erased_senders=True,
         )
         event = events[0]
         return event
@@ -1390,7 +1400,12 @@ class FederationHandler:
         )
 
         missing_events = await filter_events_for_server(
-            self._storage_controllers, origin, self.server_name, missing_events
+            self._storage_controllers,
+            origin,
+            self.server_name,
+            missing_events,
+            redact=True,
+            filter_out_erased_senders=True,
         )
 
         return missing_events
diff --git a/synapse/visibility.py b/synapse/visibility.py
index a776f9b900..46adaa0da1 100644
--- a/synapse/visibility.py
+++ b/synapse/visibility.py
@@ -576,8 +576,9 @@ async def filter_events_for_server(
     target_server_name: str,
     local_server_name: str,
     events: Sequence[EventBase],
-    redact: bool = True,
-    filter_out_erased_senders: bool = True,
+    *,
+    redact: bool,
+    filter_out_erased_senders: bool,
 ) -> List[EventBase]:
     """Filter a list of events based on whether the target server is allowed to
     see them.
diff --git a/tests/test_visibility.py b/tests/test_visibility.py
index 2801a950a8..569a01a417 100644
--- a/tests/test_visibility.py
+++ b/tests/test_visibility.py
@@ -63,7 +63,12 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):
 
         filtered = self.get_success(
             filter_events_for_server(
-                self._storage_controllers, "test_server", "hs", events_to_filter
+                self._storage_controllers,
+                "test_server",
+                "hs",
+                events_to_filter,
+                redact=True,
+                filter_out_erased_senders=True,
             )
         )
 
@@ -85,7 +90,12 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):
         self.assertEqual(
             self.get_success(
                 filter_events_for_server(
-                    self._storage_controllers, "remote_hs", "hs", [outlier]
+                    self._storage_controllers,
+                    "remote_hs",
+                    "hs",
+                    [outlier],
+                    redact=True,
+                    filter_out_erased_senders=True,
                 )
             ),
             [outlier],
@@ -96,7 +106,12 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):
 
         filtered = self.get_success(
             filter_events_for_server(
-                self._storage_controllers, "remote_hs", "local_hs", [outlier, evt]
+                self._storage_controllers,
+                "remote_hs",
+                "local_hs",
+                [outlier, evt],
+                redact=True,
+                filter_out_erased_senders=True,
             )
         )
         self.assertEqual(len(filtered), 2, f"expected 2 results, got: {filtered}")
@@ -108,7 +123,12 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):
         # be redacted)
         filtered = self.get_success(
             filter_events_for_server(
-                self._storage_controllers, "other_server", "local_hs", [outlier, evt]
+                self._storage_controllers,
+                "other_server",
+                "local_hs",
+                [outlier, evt],
+                redact=True,
+                filter_out_erased_senders=True,
             )
         )
         self.assertEqual(filtered[0], outlier)
@@ -143,7 +163,12 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):
         # ... and the filtering happens.
         filtered = self.get_success(
             filter_events_for_server(
-                self._storage_controllers, "test_server", "local_hs", events_to_filter
+                self._storage_controllers,
+                "test_server",
+                "local_hs",
+                events_to_filter,
+                redact=True,
+                filter_out_erased_senders=True,
             )
         )