Merge 0.10->trunk
[prosody.git] / plugins / mod_carbons.lua
index 51242809d3c2e91c5d96c3ceccab90457a023d1d..9ef14713553bf3fa7e60c38ef0853b7f88216807 100644 (file)
@@ -7,28 +7,27 @@ local st = require "util.stanza";
 local jid_bare = require "util.jid".bare;
 local xmlns_carbons = "urn:xmpp:carbons:2";
 local xmlns_forward = "urn:xmpp:forward:0";
-local full_sessions, bare_sessions = full_sessions, bare_sessions;
+local full_sessions, bare_sessions = prosody.full_sessions, prosody.bare_sessions;
 
 local function toggle_carbons(event)
        local origin, stanza = event.origin, event.stanza;
        local state = stanza.tags[1].name;
        module:log("debug", "%s %sd carbons", origin.full_jid, state);
        origin.want_carbons = state == "enable" and stanza.tags[1].attr.xmlns;
-       return origin.send(st.reply(stanza));
+       origin.send(st.reply(stanza));
+       return true;
 end
 module:hook("iq-set/self/"..xmlns_carbons..":disable", toggle_carbons);
 module:hook("iq-set/self/"..xmlns_carbons..":enable", toggle_carbons);
 
 local function message_handler(event, c2s)
        local origin, stanza = event.origin, event.stanza;
-       local orig_type = stanza.attr.type;
+       local orig_type = stanza.attr.type or "normal";
        local orig_from = stanza.attr.from;
        local orig_to = stanza.attr.to;
        
-       if not (orig_type == nil
-                       or orig_type == "normal"
-                       or orig_type == "chat") then
-               return -- No carbons for messages of type error or headline
+       if not(orig_type == "chat" or orig_type == "normal" and stanza:get_child("body")) then
+               return -- Only chat type messages
        end
 
        -- Stanza sent by a local client