1 files changed, 8 insertions, 5 deletions
diff --git a/synapse/api/filtering.py b/synapse/api/filtering.py
index a9888381b4..2b5af264b4 100644
--- a/synapse/api/filtering.py
+++ b/synapse/api/filtering.py
@@ -283,6 +283,9 @@ class FilterCollection:
await self._room_filter.filter(events)
)
+ def blocks_all_rooms(self) -> bool:
+ return self._room_filter.filters_all_rooms()
+
def blocks_all_presence(self) -> bool:
return (
self._presence_filter.filters_all_types()
@@ -351,13 +354,13 @@ class Filter:
self.not_rel_types = filter_json.get("org.matrix.msc3874.not_rel_types", [])
def filters_all_types(self) -> bool:
- return "*" in self.not_types
+ return self.types == [] or "*" in self.not_types
def filters_all_senders(self) -> bool:
- return "*" in self.not_senders
+ return self.senders == [] or "*" in self.not_senders
def filters_all_rooms(self) -> bool:
- return "*" in self.not_rooms
+ return self.rooms == [] or "*" in self.not_rooms
def _check(self, event: FilterEvent) -> bool:
"""Checks whether the filter matches the given event.
@@ -450,8 +453,8 @@ class Filter:
if any(map(match_func, disallowed_values)):
return False
- # Other the event does not match at least one of the allowed values,
- # reject it.
+ # Otherwise if the event does not match at least one of the allowed
+ # values, reject it.
allowed_values = getattr(self, name)
if allowed_values is not None:
if not any(map(match_func, allowed_values)):
|