Don't send XEP-0280 v1 copies back to sender
authorHolger Weiss <holger@zedat.fu-berlin.de>
Fri, 30 May 2014 21:32:18 +0000 (23:32 +0200)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Fri, 30 May 2014 21:32:18 +0000 (23:32 +0200)
An earlier version of XEP-0280 specified the <received/> and <sent/>
tags to be siblings of the <forwarded/> element, whereas the current
version mandates them to be parents of <forwarded/>.  The mod_carboncopy
module supports both variants.  However, the check that makes sure
clients won't receive a copy of the messages they sent didn't work for
the old-style schema.  This is now fixed.

src/mod_carboncopy.erl

index 124a15f35ccbddf05264c210130da171b236a43c..009d17ed26e0c10bb0757321062af9436bc5e29a 100644 (file)
@@ -153,9 +153,14 @@ check_and_forward(JID, To, #xmlel{name = <<"message">>, attrs = Attrs} = Packet,
                                if SubTag == false ->
                                    send_copies(JID, To, Packet, Direction);
                                   true ->
-                                   case xml:get_subtag(SubTag,<<"forwarded">>) of
+                                   case xml:get_subtag(Packet,<<"forwarded">>) of
                                        false->
-                                           send_copies(JID, To, Packet, Direction);
+                                           case xml:get_subtag(SubTag,<<"forwarded">>) of
+                                               false ->
+                                                   send_copies(JID, To, Packet, Direction);
+                                               _ ->
+                                                   stop
+                                           end;
                                        _ ->
                                            stop
                                    end