From: Holger Weiss Date: Thu, 13 Sep 2018 22:18:17 +0000 (+0200) Subject: mod_muc_room: Fix the room's CAPS hash X-Git-Tag: 18.09~38 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=adf0d7de91fe0b4ecce53838ed2aecca602566ca;p=ejabberd mod_muc_room: Fix the room's CAPS hash Don't forget the room's xdata when calculating the CAPS hash. --- 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)}