Comparison

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
comparison
equal deleted inserted replaced
2141:218a3d3f7f97 2142:d6fbb57a216c
14 local stanza, origin = event.stanza, event.origin; 14 local stanza, origin = event.stanza, event.origin;
15 local log = origin.log or module._log; 15 local log = origin.log or module._log;
16 log("debug", "check_subscribed(%s)", stanza:top_tag()); 16 log("debug", "check_subscribed(%s)", stanza:top_tag());
17 if stanza.attr.type == "error" then return end 17 if stanza.attr.type == "error" then return end
18 18
19 local to_orig = stanza.attr.to;
20 if to_orig == nil or to_orig == origin.full_jid then return end -- to self
21
22 local to_bare = jid_bare(to_orig);
23 local from_jid = jid_bare(stanza.attr.from);
24 if to_bare == from_jid then return end -- to own resource
25
19 -- Check if it's a message to a joined room 26 -- Check if it's a message to a joined room
20 local to_bare = jid_bare(stanza.attr.to);
21 local rooms = origin.rooms_joined; 27 local rooms = origin.rooms_joined;
22 if rooms and rooms[to_bare] then 28 if rooms and rooms[to_bare] then
23 log("debug", "Message to joined room, no limit"); 29 log("debug", "Message to joined room, no limit");
24 return 30 return
25 end 31 end
30 log("debug", "New throttle"); 36 log("debug", "New throttle");
31 lim = throttle.create(max * multiplier, 60 * multiplier); 37 lim = throttle.create(max * multiplier, 60 * multiplier);
32 origin.throttle_unsolicited = lim; 38 origin.throttle_unsolicited = lim;
33 end 39 end
34 40
35 local to_user, to_host = jid_split(stanza.attr.to); 41 local to_user, to_host = jid_split(to_orig);
36 local from_jid = jid_bare(stanza.attr.from);
37 if to_user and not is_contact_subscribed(to_user, to_host, from_jid) then 42 if to_user and not is_contact_subscribed(to_user, to_host, from_jid) then
38 log("debug", "%s is not subscribed to %s@%s", from_jid, to_user, to_host); 43 log("debug", "%s is not subscribed to %s@%s", from_jid, to_user, to_host);
39 if not lim:poll(1) then 44 if not lim:poll(1) then
40 log("warn", "Sent too many messages to non-contacts, bouncing message"); 45 log("warn", "Sent too many messages to non-contacts, bouncing message");
41 event.origin.firewall_mark_throttle_unsolicited = gettime(); 46 event.origin.firewall_mark_throttle_unsolicited = gettime();