aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAriadne Conill <ariadne@dereferenced.org>2019-10-04 15:41:55 +0000
committerAriadne Conill <ariadne@dereferenced.org>2019-10-04 16:06:14 +0000
commitd0e874c7f20fa696e7e378d10e6fcd145d71e643 (patch)
tree5a8fe0fed5a01728d092c58282fda5a8e8178e3f
parent51b317a60248c30ebbe4040e08ab726cdf766908 (diff)
downloadpleroma-d0e874c7f20fa696e7e378d10e6fcd145d71e643.tar.gz
streamer: worker: check for lack of intersectionality between a user's blocklist and an activity's recipientlist
-rw-r--r--lib/pleroma/web/streamer/worker.ex3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/pleroma/web/streamer/worker.ex b/lib/pleroma/web/streamer/worker.ex
index bbb7483e5..3d2c8f473 100644
--- a/lib/pleroma/web/streamer/worker.ex
+++ b/lib/pleroma/web/streamer/worker.ex
@@ -132,11 +132,14 @@ defmodule Pleroma.Web.Streamer.Worker do
blocks = user.info.blocks || []
mutes = user.info.mutes || []
reblog_mutes = user.info.muted_reblogs || []
+ recipient_blocks = MapSet.new(blocks ++ mutes)
+ recipients = MapSet.new(item.recipients)
domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.info.domain_blocks)
with parent when not is_nil(parent) <- Object.normalize(item),
true <- Enum.all?([blocks, mutes, reblog_mutes], &(item.actor not in &1)),
true <- Enum.all?([blocks, mutes], &(parent.data["actor"] not in &1)),
+ true <- MapSet.disjoint?(recipients, recipient_blocks),
%{host: item_host} <- URI.parse(item.actor),
%{host: parent_host} <- URI.parse(parent.data["actor"]),
false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, item_host),