aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-06-01 09:07:16 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-06-01 09:07:16 +0300
commit4337300fce29a287f744f69c0f9e76b522934f32 (patch)
tree32bca5f409ee356bd670771abff11ebb38f790e5
parentDisplay muc#roomconfig_changesubject in room's disco#info (diff)
Always display room's xdata in disco#info
-rw-r--r--src/mod_muc_room.erl18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index 94c9ae327..7779cd5e3 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -3827,7 +3827,7 @@ process_iq_disco_info(From, #iq{type = get, lang = Lang,
sub_els = [#disco_info{node = <<>>}]},
StateData) ->
DiscoInfo = make_disco_info(From, StateData),
- Extras = iq_disco_info_extras(Lang, StateData),
+ Extras = iq_disco_info_extras(Lang, StateData, false),
{result, DiscoInfo#disco_info{xdata = [Extras]}};
process_iq_disco_info(From, #iq{type = get, lang = Lang,
sub_els = [#disco_info{node = Node}]},
@@ -3837,16 +3837,16 @@ process_iq_disco_info(From, #iq{type = get, lang = Lang,
DiscoInfo = make_disco_info(From, StateData),
Hash = mod_caps:compute_disco_hash(DiscoInfo, sha),
Node = <<(?EJABBERD_URI)/binary, $#, Hash/binary>>,
- {result, DiscoInfo#disco_info{node = Node}}
+ Extras = iq_disco_info_extras(Lang, StateData, true),
+ {result, DiscoInfo#disco_info{node = Node, xdata = [Extras]}}
catch _:{badmatch, _} ->
Txt = <<"Invalid node name">>,
{error, xmpp:err_item_not_found(Txt, Lang)}
end.
--spec iq_disco_info_extras(binary(), state()) -> xdata().
-iq_disco_info_extras(Lang, StateData) ->
+-spec iq_disco_info_extras(binary(), state(), boolean()) -> xdata().
+iq_disco_info_extras(Lang, StateData, Static) ->
Fs1 = [{description, (StateData#state.config)#config.description},
- {occupants, ?DICT:size(StateData#state.nicks)},
{contactjid, get_owners(StateData)},
{changesubject, (StateData#state.config)#config.allow_change_subj},
{lang, (StateData#state.config)#config.lang}],
@@ -3856,8 +3856,14 @@ iq_disco_info_extras(Lang, StateData) ->
_ ->
Fs1
end,
+ Fs3 = case Static of
+ false ->
+ [{occupants, ?DICT:size(StateData#state.nicks)}|Fs2];
+ true ->
+ Fs2
+ end,
#xdata{type = result,
- fields = muc_roominfo:encode(Fs2, Lang)}.
+ fields = muc_roominfo:encode(Fs3, Lang)}.
-spec process_iq_disco_items(jid(), iq(), state()) ->
{error, stanza_error()} | {result, disco_items()}.