]> granicus.if.org Git - ejabberd/commitdiff
Only respond with occupants list to disco#items with empty node
authorEvgeny Khramtsov <ekhramtsov@process-one.net>
Mon, 15 Jul 2019 11:10:45 +0000 (14:10 +0300)
committerEvgeny Khramtsov <ekhramtsov@process-one.net>
Mon, 15 Jul 2019 11:10:45 +0000 (14:10 +0300)
Fixes #2942

src/mod_muc_room.erl

index a2f351c9bba5f4016d68b8f0c40bbae1887d3578..420b995986b3c732d4b0316ed6bfef65cfac8148 100644 (file)
@@ -4093,7 +4093,8 @@ iq_disco_info_extras(Lang, StateData, Static) ->
 process_iq_disco_items(_From, #iq{type = set, lang = Lang}, _StateData) ->
     Txt = ?T("Value 'set' of 'type' attribute is not allowed"),
     {error, xmpp:err_not_allowed(Txt, Lang)};
-process_iq_disco_items(From, #iq{type = get}, StateData) ->
+process_iq_disco_items(From, #iq{type = get, sub_els = [#disco_items{node = <<>>}]},
+                      StateData) ->
     case (StateData#state.config)#config.public_list of
       true ->
          {result, get_mucroom_disco_items(StateData)};
@@ -4107,7 +4108,10 @@ process_iq_disco_items(From, #iq{type = get}, StateData) ->
                %% (http://xmpp.org/extensions/xep-0045.html#disco-roomitems)
                {result, #disco_items{}}
          end
-    end.
+    end;
+process_iq_disco_items(_From, #iq{lang = Lang}, _StateData) ->
+    Txt = ?T("Node not found"),
+    {error, xmpp:err_item_not_found(Txt, Lang)}.
 
 -spec process_iq_captcha(jid(), iq(), state()) -> {error, stanza_error()} |
                                                  {result, undefined}.