This commit is contained in:
Travis Ralston 2025-03-13 15:09:05 -06:00 committed by GitHub
commit 7f08e21780
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 3 deletions

View file

@ -0,0 +1 @@
Server admins will see [soft failed](https://spec.matrix.org/v1.13/server-server-api/#soft-failure) events over the Client-Server API.

View file

@ -48,7 +48,13 @@ from synapse.logging.opentracing import trace
from synapse.storage.controllers import StorageControllers
from synapse.storage.databases.main import DataStore
from synapse.synapse_rust.events import event_visible_to_server
from synapse.types import RetentionPolicy, StateMap, StrCollection, get_domain_from_id
from synapse.types import (
RetentionPolicy,
StateMap,
StrCollection,
UserID,
get_domain_from_id,
)
from synapse.types.state import StateFilter
from synapse.util import Clock
@ -106,9 +112,14 @@ async def filter_events_for_client(
of `user_id` at each event.
"""
# Filter out events that have been soft failed so that we don't relay them
# to clients.
# to clients, unless they're a server admin.
events_before_filtering = events
events = [e for e in events if not e.internal_metadata.is_soft_failed()]
if filter_send_to_client and await storage.main.is_server_admin(
UserID.from_string(user_id)
):
events = events_before_filtering
else:
events = [e for e in events if not e.internal_metadata.is_soft_failed()]
if len(events_before_filtering) != len(events):
if filtered_event_logger.isEnabledFor(logging.DEBUG):
filtered_event_logger.debug(