Mercurial > prosody-modules
comparison mod_carbons/mod_carbons.lua @ 664:2f11d2473afd
mod_carbons: Move creation of the carbon stanza out of the loop.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 06 May 2012 23:27:28 +0200 |
| parents | 267548522810 |
| children | 5f7dd5336dbe |
comparison
equal
deleted
inserted
replaced
| 663:a826b61c8f3a | 664:2f11d2473afd |
|---|---|
| 78 end); | 78 end); |
| 79 module:log("debug", "Message tagged private, ignoring"); | 79 module:log("debug", "Message tagged private, ignoring"); |
| 80 return | 80 return |
| 81 end | 81 end |
| 82 | 82 |
| 83 local msg = st.clone(stanza); | |
| 84 msg.attr.xmlns = msg.attr.xmlns or "jabber:client"; | |
| 85 local fwd = st.message{ from = bare_jid, type = orig_type, } | |
| 86 :tag(c2s and "sent" or "received", { xmlns = xmlns_carbons }):up() | |
| 87 :tag("forwarded", { xmlns = xmlns_forward }) | |
| 88 :add_child(msg):reset(); | |
| 89 | |
| 83 user_sessions = user_sessions and user_sessions.sessions; | 90 user_sessions = user_sessions and user_sessions.sessions; |
| 84 for resource, session in pairs(user_sessions) do | 91 for resource, session in pairs(user_sessions) do |
| 85 local full_jid = bare_jid .. "/" .. resource; | 92 local full_jid = bare_jid .. "/" .. resource; |
| 86 module:log("debug", "%s wants carbons: %s", session.full_jid, tostring(session.want_carbons)); | 93 if session.want_carbons and ((c2s and session ~= origin) or (not c2s and not no_carbon_to[resource])) then |
| 87 if session.want_carbons then | 94 fwd.attr.to = full_jid; |
| 88 if c2s then | 95 module:log("debug", "Sending carbon to %s", full_jid); |
| 89 module:log("debug", "Session is origin: %s", tostring(session == origin)); | 96 session.send(fwd); |
| 90 else | |
| 91 module:log("debug", "Session is in ignore list: %s", tostring(no_carbon_to[resource])); | |
| 92 end | |
| 93 if (c2s and session ~= origin) or (not c2s and not no_carbon_to[resource]) then | |
| 94 local msg = st.clone(stanza); | |
| 95 msg.attr.xmlns = msg.attr.xmlns or "jabber:client"; | |
| 96 local fwd = st.message{ | |
| 97 from = bare_jid, | |
| 98 to = full_jid, | |
| 99 type = orig_type, | |
| 100 } | |
| 101 :tag(c2s and "sent" or "received", { xmlns = xmlns_carbons }):up() | |
| 102 :tag("forwarded", { xmlns = xmlns_forward }) | |
| 103 :add_child(msg); | |
| 104 module:log("debug", "Sending carbon"); | |
| 105 session.send(fwd); | |
| 106 end | |
| 107 end | 97 end |
| 108 end | 98 end |
| 109 end | 99 end |
| 110 | 100 |
| 111 local function c2s_message_handler(event) | 101 local function c2s_message_handler(event) |
