mod_muc_room: Fix the room's CAPS hash

Don't forget the room's xdata when calculating the CAPS hash.
This commit is contained in:
Holger Weiss 2018-09-14 00:18:17 +02:00
parent 8c03427c25
commit adf0d7de91
1 changed files with 7 additions and 4 deletions

View File

@ -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)}