Comparison

mod_carbons/mod_carbons.lua @ 804:9927d88a1b2a

mod_carbons: Merge enable and disable handlers
author Kim Alvefur <zash@zash.se>
date Sun, 26 Aug 2012 18:56:50 +0200
parent 743:5f7dd5336dbe
child 832:9087431d35f6
comparison
equal deleted inserted replaced
803:be509416d64c 804:9927d88a1b2a
8 local jid_split = require "util.jid".split; 8 local jid_split = require "util.jid".split;
9 local xmlns_carbons = "urn:xmpp:carbons:1"; 9 local xmlns_carbons = "urn:xmpp:carbons:1";
10 local xmlns_forward = "urn:xmpp:forward:0"; 10 local xmlns_forward = "urn:xmpp:forward:0";
11 local host_sessions = hosts[module.host].sessions; 11 local host_sessions = hosts[module.host].sessions;
12 12
13 module:hook("iq/self/"..xmlns_carbons..":enable", function(event) 13 local function toggle_carbons(event)
14 local origin, stanza = event.origin, event.stanza; 14 local origin, stanza = event.origin, event.stanza;
15 if stanza.attr.type == "set" then 15 if stanza.attr.type == "set" then
16 module:log("debug", "%s enabled carbons", origin.full_jid); 16 local state = stanza.tags[1].name;
17 origin.want_carbons = true; 17 module:log("debug", "%s %sd carbons", origin.full_jid, state);
18 origin.want_carbons = state == "enable";
18 origin.send(st.reply(stanza)); 19 origin.send(st.reply(stanza));
19 return true 20 return true
20 end 21 end
21 end); 22 end
22 23 module:hook("iq/self/"..xmlns_carbons..":disable", toggle_carbons);
23 module:hook("iq/self/"..xmlns_carbons..":disable", function(event) 24 module:hook("iq/self/"..xmlns_carbons..":enable", toggle_carbons);
24 local origin, stanza = event.origin, event.stanza;
25 if stanza.attr.type == "set" then
26 module:log("debug", "%s disabled carbons", origin.full_jid);
27 origin.want_carbons = nil;
28 origin.send(st.reply(stanza));
29 return true
30 end
31 end);
32 25
33 local function message_handler(event, c2s) 26 local function message_handler(event, c2s)
34 local origin, stanza = event.origin, event.stanza; 27 local origin, stanza = event.origin, event.stanza;
35 local orig_type = stanza.attr.type; 28 local orig_type = stanza.attr.type;
36 local orig_to = stanza.attr.to; 29 local orig_to = stanza.attr.to;