mod_carbons/mod_carbons.lua
changeset 618 267548522810
parent 617 3ca933c9d8ff
child 664 2f11d2473afd
equal deleted inserted replaced
617:3ca933c9d8ff 618:267548522810
    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 	if not stanza:get_child("forwarded", xmlns_forward) then
    83 	user_sessions = user_sessions and user_sessions.sessions;
    84 		user_sessions = user_sessions and user_sessions.sessions;
    84 	for resource, session in pairs(user_sessions) do
    85 		for resource, session in pairs(user_sessions) do
    85 		local full_jid = bare_jid .. "/" .. resource;
    86 			local full_jid = bare_jid .. "/" .. resource;
    86 		module:log("debug", "%s wants carbons: %s", session.full_jid, tostring(session.want_carbons));
    87 			module:log("debug", "%s wants carbons: %s", session.full_jid, tostring(session.want_carbons));
    87 		if session.want_carbons then
    88 			if session.want_carbons then
    88 			if c2s then
    89 				if c2s then
    89 				module:log("debug", "Session is origin: %s", tostring(session == origin));
    90 					module:log("debug", "Session is origin: %s", tostring(session == origin));
    90 			else
    91 				else
    91 				module:log("debug", "Session is in ignore list: %s", tostring(no_carbon_to[resource]));
    92 					module:log("debug", "Session is in ignore list: %s", tostring(no_carbon_to[resource]));
    92 			end
    93 				end
    93 			if (c2s and session ~= origin) or (not c2s and not no_carbon_to[resource]) then
    94 				if (c2s and session ~= origin) or (not c2s and not no_carbon_to[resource]) then
    94 				local msg = st.clone(stanza);
    95 					local msg = st.clone(stanza);
    95 				msg.attr.xmlns = msg.attr.xmlns or "jabber:client";
    96 					msg.attr.xmlns = msg.attr.xmlns or "jabber:client";
    96 				local fwd = st.message{
    97 					local fwd = st.message{
    97 					from = bare_jid,
    98 								from = bare_jid,
    98 					to = full_jid,
    99 								to = full_jid,
    99 					type = orig_type,
   100 								type = orig_type,
   100 				}
   101 							}
   101 				:tag(c2s and "sent" or "received", { xmlns = xmlns_carbons }):up()
   102 						:tag(c2s and "sent" or "received", { xmlns = xmlns_carbons }):up()
   102 				:tag("forwarded", { xmlns = xmlns_forward })
   103 						:tag("forwarded", { xmlns = xmlns_forward })
   103 				:add_child(msg);
   104 							:add_child(msg);
   104 				module:log("debug", "Sending carbon");
   105 					module:log("debug", "Sending carbon");
   105 				session.send(fwd);
   106 					session.send(fwd);
       
   107 				end
       
   108 			end
   106 			end
   109 		end
   107 		end
   110 	end
   108 	end
   111 end
   109 end
   112 
   110