aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/mod_blocklist.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2015-09-16 15:16:51 +0200
committerKim Alvefur <zash@zash.se>2015-09-16 15:16:51 +0200
commit3d54e67a5ecad5dec7dc232afdd678be6187093f (patch)
tree492a6efaf9f26c924da6c19b63542ac2221436a1 /plugins/mod_blocklist.lua
parentb7086832f43bc69e72428b30c286eefe1955246a (diff)
downloadprosody-3d54e67a5ecad5dec7dc232afdd678be6187093f.tar.gz
prosody-3d54e67a5ecad5dec7dc232afdd678be6187093f.zip
mod_blocklist: Explicitly halt event propagation after returning a reply (send returns nil sometimes)
Diffstat (limited to 'plugins/mod_blocklist.lua')
-rw-r--r--plugins/mod_blocklist.lua18
1 files changed, 12 insertions, 6 deletions
diff --git a/plugins/mod_blocklist.lua b/plugins/mod_blocklist.lua
index baed6709..8589c1e9 100644
--- a/plugins/mod_blocklist.lua
+++ b/plugins/mod_blocklist.lua
@@ -95,7 +95,8 @@ module:hook("iq-get/self/urn:xmpp:blocking:blocklist", function (event)
end
end
origin.interested_blocklist = true; -- Gets notified about changes
- return origin.send(reply);
+ origin.send(reply);
+ return true;
end);
-- Add or remove some jid(s) from the blocklist
@@ -109,7 +110,8 @@ local function edit_blocklist(event)
for item in action:childtags("item") do
local jid = jid_prep(item.attr.jid);
if not jid then
- return origin.send(st_error_reply(stanza, "modify", "jid-malformed"));
+ origin.send(st_error_reply(stanza, "modify", "jid-malformed"));
+ return true;
end
item.attr.jid = jid; -- echo back prepped
new[jid] = is_contact_subscribed(username, module.host, jid) or false;
@@ -119,7 +121,8 @@ local function edit_blocklist(event)
if mode and not next(new) then
-- <block/> element does not contain at least one <item/> child element
- return origin.send(st_error_reply(stanza, "modify", "bad-request"));
+ origin.send(st_error_reply(stanza, "modify", "bad-request"));
+ return true;
end
local blocklist = get_blocklist(username);
@@ -141,7 +144,8 @@ local function edit_blocklist(event)
if ok then
origin.send(st.reply(stanza));
else
- return origin.send(st_error_reply(stanza, "wait", "internal-server-error", err));
+ origin.send(st_error_reply(stanza, "wait", "internal-server-error", err));
+ return true;
end
if mode then
@@ -208,7 +212,8 @@ end
local function bounce_stanza(event)
local origin, stanza = event.origin, event.stanza;
if drop_stanza(event) then
- return origin.send(st_error_reply(stanza, "cancel", "service-unavailable"));
+ origin.send(st_error_reply(stanza, "cancel", "service-unavailable"));
+ return true;
end
end
@@ -244,8 +249,9 @@ local function bounce_outgoing(event)
return drop_outgoing(event);
end
if drop_outgoing(event) then
- return origin.send(st_error_reply(stanza, "cancel", "not-acceptable", "You have blocked this JID")
+ origin.send(st_error_reply(stanza, "cancel", "not-acceptable", "You have blocked this JID")
:tag("blocked", { xmlns = "urn:xmpp:blocking:errors" }));
+ return true;
end
end