Software / code / prosody-modules
Comparison
mod_carbons/mod_carbons.lua @ 1183:3acb01ca7e5c
mod_carbons: Handle enabled/disable with the same callback for all versions
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 05 Sep 2013 01:00:08 +0200 |
| parent | 1167:8ceab2331216 |
| child | 1184:0d3d15586d7e |
comparison
equal
deleted
inserted
replaced
| 1182:547b3c05cc06 | 1183:3acb01ca7e5c |
|---|---|
| 12 local full_sessions, bare_sessions = full_sessions, bare_sessions; | 12 local full_sessions, bare_sessions = full_sessions, bare_sessions; |
| 13 | 13 |
| 14 local function toggle_carbons(event) | 14 local function toggle_carbons(event) |
| 15 local origin, stanza = event.origin, event.stanza; | 15 local origin, stanza = event.origin, event.stanza; |
| 16 if stanza.attr.type == "set" then | 16 if stanza.attr.type == "set" then |
| 17 local state = stanza.tags[1].name; | 17 local state = stanza.tags[1].attr.mode or stanza.tags[1].name; |
| 18 module:log("debug", "%s %sd carbons", origin.full_jid, state); | 18 module:log("debug", "%s %sd carbons", origin.full_jid, state); |
| 19 origin.want_carbons = state == "enable" and stanza.tags[1].attr.xmlns; | 19 origin.want_carbons = state == "enable" and stanza.tags[1].attr.xmlns; |
| 20 origin.send(st.reply(stanza)); | 20 origin.send(st.reply(stanza)); |
| 21 return true | 21 return true |
| 22 end | 22 end |
| 25 module:hook("iq/self/"..xmlns_carbons..":enable", toggle_carbons); | 25 module:hook("iq/self/"..xmlns_carbons..":enable", toggle_carbons); |
| 26 | 26 |
| 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 module:hook("iq/self/"..xmlns_carbons_really_old..":carbons", toggle_carbons); |
| 31 -- COMPAT :( | |
| 32 if module:get_option_boolean("carbons_v0") then | |
| 33 module:hook("iq/self/"..xmlns_carbons_really_old..":carbons", function(event) | |
| 34 local origin, stanza = event.origin, event.stanza; | |
| 35 if stanza.attr.type == "set" then | |
| 36 local state = stanza.tags[1].attr.mode; | |
| 37 origin.want_carbons = state == "enable" and xmlns_carbons_really_old; | |
| 38 origin.send(st.reply(stanza)); | |
| 39 return true; | |
| 40 end | |
| 41 end); | |
| 42 end | |
| 43 | 31 |
| 44 local function message_handler(event, c2s) | 32 local function message_handler(event, c2s) |
| 45 local origin, stanza = event.origin, event.stanza; | 33 local origin, stanza = event.origin, event.stanza; |
| 46 local orig_type = stanza.attr.type; | 34 local orig_type = stanza.attr.type; |
| 47 local orig_from = stanza.attr.from; | 35 local orig_from = stanza.attr.from; |