From 9b16d09261f7008bb2d9f64fbb32a047c8118389 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Sun, 11 May 2014 23:52:20 +0200 Subject: Don't carbon copy messages with hint Honor the hint defined in XEP-0334. --- src/mod_carboncopy.erl | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) (limited to 'src/mod_carboncopy.erl') diff --git a/src/mod_carboncopy.erl b/src/mod_carboncopy.erl index 16f0c06fc..6f3101fcd 100644 --- a/src/mod_carboncopy.erl +++ b/src/mod_carboncopy.erl @@ -143,24 +143,29 @@ check_and_forward(JID, To, #xmlel{name = <<"message">>, attrs = Attrs} = Packet, <<"chat">> -> case xml:get_subtag(Packet, <<"private">>) of false -> - case xml:get_subtag(Packet,<<"received">>) of + case xml:get_subtag(Packet, <<"no-copy">>) of false -> - %% We must check if a packet contains "" tags in order to avoid - %% receiving message back to original sender. - SubTag = xml:get_subtag(Packet,<<"sent">>), - if SubTag == false -> - send_copies(JID, To, Packet, Direction); - true -> - case xml:get_subtag(SubTag,<<"forwarded">>) of - false-> - send_copies(JID, To, Packet, Direction); - _ -> - stop - end - end; + case xml:get_subtag(Packet,<<"received">>) of + false -> + %% We must check if a packet contains "" + %% tags in order to avoid receiving message back to original sender. + SubTag = xml:get_subtag(Packet,<<"sent">>), + if SubTag == false -> + send_copies(JID, To, Packet, Direction); + true -> + case xml:get_subtag(SubTag,<<"forwarded">>) of + false-> + send_copies(JID, To, Packet, Direction); + _ -> + stop + end + end; + _ -> + %% stop the hook chain, we don't want mod_logdb to register this message (duplicate) + stop + end; _ -> - %% stop the hook chain, we don't want mod_logdb to register this message (duplicate) - stop + ok end; _ -> ok -- cgit v1.2.3