diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2018-06-13 14:55:06 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2018-06-13 14:55:06 +0300 |
commit | 645f11d79db3611669395a6520e1cc478a3defdf (patch) | |
tree | 76a2d774df5c636931c1c6317afa5e5dd86d6f29 /src/mod_disco.erl | |
parent | mod_push: Further improve handling of carbons (diff) |
Advertise disco#info and disco#items features in mod_disco
Fixes #2470
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 bac49003..1c51e40e 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()]. |