diff options
author | Badlop <badlop@process-one.net> | 2015-08-12 12:40:37 +0200 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2015-08-12 12:40:51 +0200 |
commit | ab0f488dda3f9efc260b30ebc3611a95a84dfcda (patch) | |
tree | afc3ad70510563a5c179a866430f571f19c7336b /src | |
parent | Ejabberd now requires erlang R17+ (diff) |
Room response to disco#info node muc#traffic should be an error (EJAB-741)
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_muc_room.erl | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index c1bbbe5c9..41d4a3dfa 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -440,7 +440,7 @@ normal_state({route, From, <<"">>, ejabberd_router:route(StateData#state.jid, From, jlib:iq_to_xml(IQRes)), {next_state, normal_state, StateData}; #iq{type = Type, xmlns = XMLNS, lang = Lang, - sub_el = #xmlel{name = SubElName} = SubEl} = IQ + sub_el = #xmlel{name = SubElName, attrs = Attrs} = SubEl} = IQ when (XMLNS == (?NS_MUC_ADMIN)) or (XMLNS == (?NS_MUC_OWNER)) or (XMLNS == (?NS_DISCO_INFO)) @@ -453,7 +453,10 @@ normal_state({route, From, <<"">>, ?NS_MUC_OWNER -> process_iq_owner(From, Type, Lang, SubEl, StateData); ?NS_DISCO_INFO -> - process_iq_disco_info(From, Type, Lang, StateData); + case xml:get_attr(<<"node">>, Attrs) of + false -> process_iq_disco_info(From, Type, Lang, StateData); + {value, _} -> {error, ?ERR_SERVICE_UNAVAILABLE} + end; ?NS_DISCO_ITEMS -> process_iq_disco_items(From, Type, Lang, StateData); ?NS_VCARD -> |