aboutsummaryrefslogtreecommitdiff
path: root/src/mod_disco.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-06-13 14:55:06 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-06-13 14:55:06 +0300
commit645f11d79db3611669395a6520e1cc478a3defdf (patch)
tree76a2d774df5c636931c1c6317afa5e5dd86d6f29 /src/mod_disco.erl
parentmod_push: Further improve handling of carbons (diff)
Advertise disco#info and disco#items features in mod_disco
Fixes #2470
Diffstat (limited to '')
-rw-r--r--src/mod_disco.erl12
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()].