diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2015-03-10 00:02:32 +0100 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2015-03-10 00:02:32 +0100 |
commit | d991b92a49e724187266ab0ee3b91219fa61a1a7 (patch) | |
tree | 20a35649a6d0fdd2200e34860470e11305c87456 | |
parent | Merge pull request #467 from hamano/mod_offline_restart (diff) |
Always specify room JID for MUC <delay/> elements
As per version 1.25 of XEP-0045, use the room JID as the 'from' address
for <delay/> 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.
-rw-r--r-- | src/mod_muc_room.erl | 21 |
1 files 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), |