mod_carboncopy: Don't copy MUC PMs
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.
This commit is contained in:
parent
5bcfcf4c5e
commit
e7787e2f33
|
@ -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 ->
|
||||
|
@ -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">>) =/= <<"">>.
|
||||
|
||||
|
|
Loading…
Reference in New Issue