Diff

mod_throttle_unsolicited/mod_throttle_unsolicited.lua @ 2142:d6fbb57a216c

mod_throttle_unsolicited: Skip checking messages to self
author Kim Alvefur <zash@zash.se>
date Wed, 30 Mar 2016 10:54:47 +0200
parent 2120:f6dcfe263b85
child 2143:7cab309a26b2
line wrap: on
line diff
--- a/mod_throttle_unsolicited/mod_throttle_unsolicited.lua	Tue Mar 29 19:47:08 2016 +0200
+++ b/mod_throttle_unsolicited/mod_throttle_unsolicited.lua	Wed Mar 30 10:54:47 2016 +0200
@@ -16,8 +16,14 @@
 	log("debug", "check_subscribed(%s)", stanza:top_tag());
 	if stanza.attr.type == "error" then return end
 
+	local to_orig = stanza.attr.to;
+	if to_orig == nil or to_orig == origin.full_jid then return end -- to self
+
+	local to_bare = jid_bare(to_orig);
+	local from_jid = jid_bare(stanza.attr.from);
+	if to_bare == from_jid then return end -- to own resource
+
 	-- Check if it's a message to a joined room
-	local to_bare = jid_bare(stanza.attr.to);
 	local rooms = origin.rooms_joined;
 	if rooms and rooms[to_bare] then
 		log("debug", "Message to joined room, no limit");
@@ -32,8 +38,7 @@
 		origin.throttle_unsolicited = lim;
 	end
 
-	local to_user, to_host = jid_split(stanza.attr.to);
-	local from_jid = jid_bare(stanza.attr.from);
+	local to_user, to_host = jid_split(to_orig);
 	if to_user and not is_contact_subscribed(to_user, to_host, from_jid) then
 		log("debug", "%s is not subscribed to %s@%s", from_jid, to_user, to_host);
 		if not lim:poll(1) then