diff options
Diffstat (limited to 'src/mod_disco.erl')
-rw-r--r-- | src/mod_disco.erl | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/mod_disco.erl b/src/mod_disco.erl index bac490038..1c51e40e4 100644 --- a/src/mod_disco.erl +++ b/src/mod_disco.erl @@ -367,15 +367,21 @@ get_sm_identity(Acc, _From, -spec get_sm_features(features_acc(), jid(), jid(), binary(), binary()) -> {error, stanza_error()} | {result, [binary()]}. -get_sm_features(empty, From, To, _Node, Lang) -> +get_sm_features(empty, From, To, Node, Lang) -> #jid{luser = LFrom, lserver = LSFrom} = From, #jid{luser = LTo, lserver = LSTo} = To, case {LFrom, LSFrom} of - {LTo, LSTo} -> {error, xmpp:err_item_not_found()}; - _ -> + {LTo, LSTo} -> + case Node of + <<"">> -> {result, [?NS_DISCO_INFO, ?NS_DISCO_ITEMS]}; + _ -> {error, xmpp:err_item_not_found()} + end; + _ -> Txt = <<"Query to another users is forbidden">>, {error, xmpp:err_not_allowed(Txt, Lang)} end; +get_sm_features({result, Features}, _From, _To, <<"">>, _Lang) -> + {result, [?NS_DISCO_INFO, ?NS_DISCO_ITEMS|Features]}; get_sm_features(Acc, _From, _To, _Node, _Lang) -> Acc. -spec get_user_resources(binary(), binary()) -> [disco_item()]. |