Software /
code /
prosody
Changeset
6975:5bc229eb99d3
mod_blocklist: Skip creating some tables and some processing if unblocking
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 06 Dec 2015 02:32:16 +0100 |
parents | 6974:bdb216e0688a |
children | 6976:4688ff9d4f2b |
files | plugins/mod_blocklist.lua |
diffstat | 1 files changed, 9 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_blocklist.lua Sun Dec 06 02:30:21 2015 +0100 +++ b/plugins/mod_blocklist.lua Sun Dec 06 02:32:16 2015 +0100 @@ -121,6 +121,7 @@ local origin, stanza = event.origin, event.stanza; local username = origin.username; local action = stanza.tags[1]; -- "block" or "unblock" + local is_blocking = action.name == "block" or nil; -- nil if unblocking local new = {}; -- JIDs to block depending or unblock on action -- XEP-0191 sayeth: @@ -128,11 +129,11 @@ -- > server MUST send unavailable presence information to the contact (but -- > 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 = {}; + local send_unavailable = is_blocking and {}; -- Because blocking someone currently also blocks the ability to reject -- subscription requests, we'll preemptively reject such - local remove_pending = {}; + local remove_pending = is_blocking and {}; for item in action:childtags("item") do local jid = jid_prep(item.attr.jid); @@ -142,15 +143,15 @@ end item.attr.jid = jid; -- echo back prepped new[jid] = true; - if is_contact_subscribed(username, module.host, jid) then - send_unavailable[jid] = true; - elseif is_contact_pending_in(username, module.host, jid) then - remove_pending[jid] = true; + if is_blocking then + if is_contact_subscribed(username, module.host, jid) then + send_unavailable[jid] = true; + elseif is_contact_pending_in(username, module.host, jid) then + remove_pending[jid] = true; + end end end - local is_blocking = action.name == "block" or nil; -- nil if unblocking - if is_blocking and not next(new) then -- <block/> element does not contain at least one <item/> child element origin.send(st_error_reply(stanza, "modify", "bad-request"));