aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2019-06-20 21:20:00 +0200
committerKim Alvefur <zash@zash.se>2019-06-20 21:20:00 +0200
commit897031cde27a378e93de14d7bab6e094fb365d37 (patch)
tree67eb870400cb2d0ceb83777df3c5a1c4d212e4c9
parent51fb4278dfdab7de28c6a9cce37db335be1573bf (diff)
downloadprosody-897031cde27a378e93de14d7bab6e094fb365d37.tar.gz
prosody-897031cde27a378e93de14d7bab6e094fb365d37.zip
mod_blocklist: Trigger resend of presence when unblocking a contact (fixes #1380)
-rw-r--r--plugins/mod_blocklist.lua8
1 files changed, 8 insertions, 0 deletions
diff --git a/plugins/mod_blocklist.lua b/plugins/mod_blocklist.lua
index 8aca7332..ee48ffad 100644
--- a/plugins/mod_blocklist.lua
+++ b/plugins/mod_blocklist.lua
@@ -128,6 +128,7 @@ local function edit_blocklist(event)
-- > only if the contact is allowed to receive presence notifications [...]
-- So contacts we need to do that for are added to the set below.
local send_unavailable = is_blocking and {};
+ local send_available = not is_blocking and {};
-- Because blocking someone currently also blocks the ability to reject
-- subscription requests, we'll preemptively reject such
@@ -147,6 +148,8 @@ local function edit_blocklist(event)
elseif is_contact_pending_in(username, module.host, jid) then
remove_pending[jid] = true;
end
+ elseif is_contact_subscribed(username, module.host, jid) then
+ send_available[jid] = true;
end
end
@@ -203,6 +206,11 @@ local function edit_blocklist(event)
save_roster(username, module.host, roster);
-- Not much we can do about save failing here
end
+ else
+ local user_bare = username .. "@" .. module.host;
+ for jid in pairs(send_available) do
+ module:send(st.presence({ type = "probe", to = user_bare, from = jid }));
+ end
end
local blocklist_push = st.iq({ type = "set", id = "blocklist-push" })