comparison mod_carbons/mod_carbons.lua @ 888:f8d08f8ed7de

mod_carbons: Make support for v0 disabled by default, don't send v0 carbons for c2s
author Michael Holzt <kju@fqdn.org>
date Sun, 23 Dec 2012 19:30:28 +0100
parents 2ece37bf9cc6
children d24d87ca3f5f
comparison
equal deleted inserted replaced
887:a2259870495c 888:f8d08f8ed7de
27 -- COMPAT 27 -- COMPAT
28 module:hook("iq/self/"..xmlns_carbons_old..":disable", toggle_carbons); 28 module:hook("iq/self/"..xmlns_carbons_old..":disable", toggle_carbons);
29 module:hook("iq/self/"..xmlns_carbons_old..":enable", toggle_carbons); 29 module:hook("iq/self/"..xmlns_carbons_old..":enable", toggle_carbons);
30 30
31 -- COMPAT :( 31 -- COMPAT :(
32 module:hook("iq/self/"..xmlns_carbons_really_old..":carbons", function(event) 32 if module:get_option_boolean("carbons_v0") then
33 local origin, stanza = event.origin, event.stanza; 33 module:hook("iq/self/"..xmlns_carbons_really_old..":carbons", function(event)
34 if stanza.attr.type == "set" then 34 local origin, stanza = event.origin, event.stanza;
35 local state = stanza.tags[1].attr.mode; 35 if stanza.attr.type == "set" then
36 origin.want_carbons = state == "enable" and xmlns_carbons_really_old; 36 local state = stanza.tags[1].attr.mode;
37 origin.send(st.reply(stanza)); 37 origin.want_carbons = state == "enable" and xmlns_carbons_really_old;
38 return true; 38 origin.send(st.reply(stanza));
39 end 39 return true;
40 end); 40 end
41 end);
42 end
41 43
42 local function message_handler(event, c2s) 44 local function message_handler(event, c2s)
43 local origin, stanza = event.origin, event.stanza; 45 local origin, stanza = event.origin, event.stanza;
44 local orig_type = stanza.attr.type; 46 local orig_type = stanza.attr.type;
45 local orig_from = stanza.attr.from; 47 local orig_from = stanza.attr.from;
107 -- Carbons are sent to resources that have enabled it 109 -- Carbons are sent to resources that have enabled it
108 if session.want_carbons 110 if session.want_carbons
109 -- but not the resource that sent the message, or the one that it's directed to 111 -- but not the resource that sent the message, or the one that it's directed to
110 and session ~= target_session 112 and session ~= target_session
111 -- and isn't among the top resources that would receive the message per standard routing rules 113 -- and isn't among the top resources that would receive the message per standard routing rules
112 and (c2s or session.priority ~= top_priority) then 114 and (c2s or session.priority ~= top_priority)
115 -- don't send v0 carbons (or copies) for c2s
116 and (not c2s or session.want_carbons ~= xmlns_carbons_really_old) then
113 carbon.attr.to = session.full_jid; 117 carbon.attr.to = session.full_jid;
114 module:log("debug", "Sending carbon to %s", session.full_jid); 118 module:log("debug", "Sending carbon to %s", session.full_jid);
115 local carbon = session.want_carbons == xmlns_carbons_old and carbon_old -- COMPAT 119 local carbon = session.want_carbons == xmlns_carbons_old and carbon_old -- COMPAT
116 or session.want_carbons == xmlns_carbons_really_old and carbon_really_old -- COMPAT 120 or session.want_carbons == xmlns_carbons_really_old and carbon_really_old -- COMPAT
117 or carbon; 121 or carbon;
131 module:hook("message/bare", message_handler, 1); 135 module:hook("message/bare", message_handler, 1);
132 module:hook("message/full", message_handler, 1); 136 module:hook("message/full", message_handler, 1);
133 137
134 module:add_feature(xmlns_carbons); 138 module:add_feature(xmlns_carbons);
135 module:add_feature(xmlns_carbons_old); 139 module:add_feature(xmlns_carbons_old);
136 module:add_feature(xmlns_carbons_really_old); 140 if module:get_option_boolean("carbons_v0") then
141 module:add_feature(xmlns_carbons_really_old);
142 end