From d991b92a49e724187266ab0ee3b91219fa61a1a7 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Tue, 10 Mar 2015 00:02:32 +0100 Subject: [PATCH] Always specify room JID for MUC elements As per version 1.25 of XEP-0045, use the room JID as the 'from' address for elements also when the room is non-anonymous, and specify the original JID of the sender as an XEP-0033-style tag instead. Closes #465. --- src/mod_muc_room.erl | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index aae90af4b..64bfd6c44 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -2442,13 +2442,20 @@ add_message_to_history(FromNick, FromJID, Packet, StateData) -> _ -> true end, TimeStamp = now(), - SenderJid = case - (StateData#state.config)#config.anonymous - of - true -> StateData#state.jid; - false -> FromJID - end, - TSPacket = jlib:add_delay_info(Packet, SenderJid, TimeStamp), + AddrPacket = case (StateData#state.config)#config.anonymous of + true -> Packet; + false -> + Address = #xmlel{name = <<"address">>, + attrs = [{<<"type">>, <<"ofrom">>}, + {<<"jid">>, + jlib:jid_to_string(FromJID)}], + children = []}, + Addresses = #xmlel{name = <<"addresses">>, + attrs = [{<<"xmlns">>, ?NS_ADDRESS}], + children = [Address]}, + xml:append_subtags(Packet, [Addresses]) + end, + TSPacket = jlib:add_delay_info(AddrPacket, StateData#state.jid, TimeStamp), SPacket = jlib:replace_from_to(jlib:jid_replace_resource(StateData#state.jid, FromNick),