summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--changelog.d/10263.feature1
-rw-r--r--synapse/federation/federation_base.py12
2 files changed, 7 insertions, 6 deletions
diff --git a/changelog.d/10263.feature b/changelog.d/10263.feature
new file mode 100644
index 0000000000..7b1d2fe60f
--- /dev/null
+++ b/changelog.d/10263.feature
@@ -0,0 +1 @@
+Mark events received over federation which fail a spam check as "soft-failed".
diff --git a/synapse/federation/federation_base.py b/synapse/federation/federation_base.py
index c066617b92..2bfe6a3d37 100644
--- a/synapse/federation/federation_base.py
+++ b/synapse/federation/federation_base.py
@@ -89,12 +89,12 @@ class FederationBase:
         result = await self.spam_checker.check_event_for_spam(pdu)
 
         if result:
-            logger.warning(
-                "Event contains spam, redacting %s: %s",
-                pdu.event_id,
-                pdu.get_pdu_json(),
-            )
-            return prune_event(pdu)
+            logger.warning("Event contains spam, soft-failing %s", pdu.event_id)
+            # we redact (to save disk space) as well as soft-failing (to stop
+            # using the event in prev_events).
+            redacted_event = prune_event(pdu)
+            redacted_event.internal_metadata.soft_failed = True
+            return redacted_event
 
         return pdu