From adf0d7de91fe0b4ecce53838ed2aecca602566ca Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Fri, 14 Sep 2018 00:18:17 +0200 Subject: [PATCH] mod_muc_room: Fix the room's CAPS hash Don't forget the room's xdata when calculating the CAPS hash. --- src/mod_muc_room.erl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index a8811f58a..9983d95ae 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -2174,7 +2174,9 @@ send_initial_presences_and_messages(From, Nick, Presence, NewState, OldState) -> send_self_presence(JID, State) -> AvatarHash = (State#state.config)#config.vcard_xupdate, DiscoInfo = make_disco_info(JID, State), - DiscoHash = mod_caps:compute_disco_hash(DiscoInfo, sha), + Extras = iq_disco_info_extras(<<"en">>, State, true), + DiscoInfo1 = DiscoInfo#disco_info{xdata = [Extras]}, + DiscoHash = mod_caps:compute_disco_hash(DiscoInfo1, sha), Els1 = [#caps{hash = <<"sha-1">>, node = ejabberd_config:get_uri(), version = DiscoHash}], @@ -3897,10 +3899,11 @@ process_iq_disco_info(From, #iq{type = get, lang = Lang, try true = mod_caps:is_valid_node(Node), DiscoInfo = make_disco_info(From, StateData), - Hash = mod_caps:compute_disco_hash(DiscoInfo, sha), - Node = <<(ejabberd_config:get_uri())/binary, $#, Hash/binary>>, Extras = iq_disco_info_extras(Lang, StateData, true), - {result, DiscoInfo#disco_info{node = Node, xdata = [Extras]}} + DiscoInfo1 = DiscoInfo#disco_info{xdata = [Extras]}, + Hash = mod_caps:compute_disco_hash(DiscoInfo1, sha), + Node = <<(ejabberd_config:get_uri())/binary, $#, Hash/binary>>, + {result, DiscoInfo1#disco_info{node = Node}} catch _:{badmatch, _} -> Txt = <<"Invalid node name">>, {error, xmpp:err_item_not_found(Txt, Lang)}