Skip to content

Commit

Permalink
mod_carboncopy: Don't copy MUC PMs
Browse files Browse the repository at this point in the history
Carbon copies of private MUC message are generally not desired,
especially not when multiple clients joined the room with the same nick.
In this case, the MUC service usually sends PMs to all joined resources
anyway, so carbon-copying those PMs would create duplicates.
  • Loading branch information
weiss committed Sep 19, 2016
1 parent 5bcfcf4 commit e7787e2
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/mod_carboncopy.erl
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,9 @@ user_receive_packet(Packet, _C2SState, JID, _From, To) ->
% - we also replicate "read" notifications
check_and_forward(JID, To, Packet, Direction)->
case is_chat_message(Packet) andalso
fxml:get_subtag(Packet, <<"private">>) == false andalso
fxml:get_subtag(Packet, <<"no-copy">>) == false of
not is_muc_pm(To, Packet) andalso
fxml:get_subtag(Packet, <<"private">>) == false andalso
fxml:get_subtag(Packet, <<"no-copy">>) == false of
true ->
case is_carbon_copy(Packet) of
false ->
Expand Down Expand Up @@ -270,6 +271,11 @@ is_chat_message(#xmlel{name = <<"message">>} = Packet) ->
end;
is_chat_message(_Packet) -> false.

is_muc_pm(#jid{lresource = <<>>}, _Packet) ->
false;
is_muc_pm(_To, Packet) ->
fxml:get_subtag_with_xmlns(Packet, <<"x">>, ?NS_MUC_USER) =/= false.

has_non_empty_body(Packet) ->
fxml:get_subtag_cdata(Packet, <<"body">>) =/= <<"">>.

Expand Down

0 comments on commit e7787e2

Please sign in to comment.