--- a/mod_carbons/mod_carbons.lua Mon Apr 30 17:25:09 2012 +0200
+++ b/mod_carbons/mod_carbons.lua Sun May 06 23:27:28 2012 +0200
@@ -80,30 +80,20 @@
return
end
+ local msg = st.clone(stanza);
+ msg.attr.xmlns = msg.attr.xmlns or "jabber:client";
+ local fwd = st.message{ from = bare_jid, type = orig_type, }
+ :tag(c2s and "sent" or "received", { xmlns = xmlns_carbons }):up()
+ :tag("forwarded", { xmlns = xmlns_forward })
+ :add_child(msg):reset();
+
user_sessions = user_sessions and user_sessions.sessions;
for resource, session in pairs(user_sessions) do
local full_jid = bare_jid .. "/" .. resource;
- module:log("debug", "%s wants carbons: %s", session.full_jid, tostring(session.want_carbons));
- if session.want_carbons then
- if c2s then
- module:log("debug", "Session is origin: %s", tostring(session == origin));
- else
- module:log("debug", "Session is in ignore list: %s", tostring(no_carbon_to[resource]));
- end
- if (c2s and session ~= origin) or (not c2s and not no_carbon_to[resource]) then
- local msg = st.clone(stanza);
- msg.attr.xmlns = msg.attr.xmlns or "jabber:client";
- local fwd = st.message{
- from = bare_jid,
- to = full_jid,
- type = orig_type,
- }
- :tag(c2s and "sent" or "received", { xmlns = xmlns_carbons }):up()
- :tag("forwarded", { xmlns = xmlns_forward })
- :add_child(msg);
- module:log("debug", "Sending carbon");
- session.send(fwd);
- end
+ if session.want_carbons and ((c2s and session ~= origin) or (not c2s and not no_carbon_to[resource])) then
+ fwd.attr.to = full_jid;
+ module:log("debug", "Sending carbon to %s", full_jid);
+ session.send(fwd);
end
end
end