Changeset

6833:aeb088bb1a20

mod_blocklist: Explicitly halt event propagation after returning a reply (send returns nil sometimes)
author Kim Alvefur <zash@zash.se>
date Wed, 16 Sep 2015 15:16:51 +0200
parents 6832:9566a15d3e59
children 6834:750a97b45f88
files plugins/mod_blocklist.lua
diffstat 1 files changed, 12 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_blocklist.lua	Tue Sep 15 17:51:56 2015 +0200
+++ b/plugins/mod_blocklist.lua	Wed Sep 16 15:16:51 2015 +0200
@@ -95,7 +95,8 @@
 		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 @@
 	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 @@
 
 	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 @@
 	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 @@
 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 @@
 		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