aboutsummaryrefslogtreecommitdiff
path: root/src/mod_disco.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2006-01-19 02:17:31 +0000
committerAlexey Shchepin <alexey@process-one.net>2006-01-19 02:17:31 +0000
commit568909d5bb454fab2023e7ab1a7cf62eff8dcd39 (patch)
tree562acb2d39d04393e19bda367791a2d8f04e6289 /src/mod_disco.erl
parent* src/odbc/ejabberd_odbc.erl: Added a way to retry database (diff)
* src/aclocal.m4: Updated for zlib support
* src/configure.ac: Likewise * src/mod_muc/mod_muc_room.erl: Weakened presence filtering, added warning in non-anonymous rooms, room destroying updated to latest JEP-0045, added a number of occupants and room name in room's disco#info reply, miscellaneous internal changes (thanks to Sergei Golovan) * src/mod_muc/mod_muc.erl: Better support for nick unregistration (thanks to Sergei Golovan) * src/ejabberd_zlib/ejabberd_zlib.erl: Zlib support (thanks to Sergei Golovan) * src/ejabberd_zlib/ejabberd_zlib_drv.c: Likewise * src/ejabberd_zlib/Makefile.in: Likewise * src/ejabberd_c2s.erl: Stream compression support (JEP-0138) * src/ejabberd_receiver.erl: Likewise * src/mod_disco.erl: Don't split node name before calling hooks (thanks to Sergei Golovan) * src/mod_configure.erl: Support for configuration using ad-hoc commands (thanks to Sergei Golovan) * src/mod_announce.erl: Support for sending announce messages using ad-hoc commands (thanks to Sergei Golovan) * src/mod_adhoc.erl: Ad-hoc support (JEP-0050) (thanks to Magnus Henoch) * src/adhoc.erl: Likewise * src/adhoc.hrl: Likewise * src/jlib.hrl: Updated (thanks to Sergei Golovan) * src/gen_mod.erl: Added function is_loaded/2 (thanks to Sergei Golovan) * src/ejabberd_service.erl: Changed error message on handshake error (thanks to Sergei Golovan) * src/ejabberd.cfg.example: Updated (thanks to Sergei Golovan) SVN Revision: 486
Diffstat (limited to 'src/mod_disco.erl')
-rw-r--r--src/mod_disco.erl41
1 files changed, 15 insertions, 26 deletions
diff --git a/src/mod_disco.erl b/src/mod_disco.erl
index 14df47ca2..22f67da21 100644
--- a/src/mod_disco.erl
+++ b/src/mod_disco.erl
@@ -113,8 +113,7 @@ process_local_iq_items(From, To, #iq{type = Type, lang = Lang, sub_el = SubEl} =
set ->
IQ#iq{type = error, sub_el = [SubEl, ?ERR_NOT_ALLOWED]};
get ->
- SNode = xml:get_tag_attr_s("node", SubEl),
- Node = string:tokens(SNode, "/"),
+ Node = xml:get_tag_attr_s("node", SubEl),
Host = To#jid.lserver,
case ejabberd_hooks:run_fold(disco_local_items,
@@ -123,8 +122,8 @@ process_local_iq_items(From, To, #iq{type = Type, lang = Lang, sub_el = SubEl} =
[From, To, Node, Lang]) of
{result, Items} ->
ANode = case Node of
- [] -> [];
- _ -> [{"node", SNode}]
+ "" -> [];
+ _ -> [{"node", Node}]
end,
IQ#iq{type = result,
sub_el = [{xmlelement, "query",
@@ -144,8 +143,7 @@ process_local_iq_info(From, To, #iq{type = Type, lang = Lang,
IQ#iq{type = error, sub_el = [SubEl, ?ERR_NOT_ALLOWED]};
get ->
Host = To#jid.lserver,
- SNode = xml:get_tag_attr_s("node", SubEl),
- Node = string:tokens(SNode, "/"),
+ Node = xml:get_tag_attr_s("node", SubEl),
Identity = ejabberd_hooks:run_fold(disco_local_identity,
Host,
[],
@@ -156,8 +154,8 @@ process_local_iq_info(From, To, #iq{type = Type, lang = Lang,
[From, To, Node, Lang]) of
{result, Features} ->
ANode = case Node of
- [] -> [];
- _ -> [{"node", SNode}]
+ "" -> [];
+ _ -> [{"node", Node}]
end,
IQ#iq{type = result,
sub_el = [{xmlelement, "query",
@@ -252,7 +250,7 @@ get_vh_services(Host) ->
process_sm_iq_items(From, To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ) ->
case Type of
set ->
- #jid{user = User, luser = LTo, lserver = ToServer} = To,
+ #jid{luser = LTo, lserver = ToServer} = To,
#jid{luser = LFrom, lserver = LServer} = From,
Self = (LTo == LFrom) andalso (ToServer == LServer),
Node = xml:get_tag_attr_s("node", SubEl),
@@ -272,16 +270,15 @@ process_sm_iq_items(From, To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ
end;
get ->
Host = To#jid.lserver,
- SNode = xml:get_tag_attr_s("node", SubEl),
- Node = string:tokens(SNode, "/"),
+ Node = xml:get_tag_attr_s("node", SubEl),
case ejabberd_hooks:run_fold(disco_sm_items,
Host,
empty,
[From, To, Node, Lang]) of
{result, Items} ->
ANode = case Node of
- [] -> [];
- _ -> [{"node", SNode}]
+ "" -> [];
+ _ -> [{"node", Node}]
end,
IQ#iq{type = result,
sub_el = [{xmlelement, "query",
@@ -329,8 +326,7 @@ process_sm_iq_info(From, To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ)
IQ#iq{type = error, sub_el = [SubEl, ?ERR_NOT_ALLOWED]};
get ->
Host = To#jid.lserver,
- SNode = xml:get_tag_attr_s("node", SubEl),
- Node = string:tokens(SNode, "/"),
+ Node = xml:get_tag_attr_s("node", SubEl),
Identity = ejabberd_hooks:run_fold(disco_sm_identity,
Host,
[],
@@ -341,8 +337,8 @@ process_sm_iq_info(From, To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ)
[From, To, Node, Lang]) of
{result, Features} ->
ANode = case Node of
- [] -> [];
- _ -> [{"node", SNode}]
+ "" -> [];
+ _ -> [{"node", Node}]
end,
IQ#iq{type = result,
sub_el = [{xmlelement, "query",
@@ -384,24 +380,17 @@ get_user_resources(User, Server) ->
get_publish_items(empty,
#jid{luser = LFrom, lserver = LSFrom},
- #jid{user = User, server = Server, luser = LTo, lserver = LSTo} = _To,
+ #jid{luser = LTo, lserver = LSTo} = _To,
Node, _Lang) ->
if
(LFrom == LTo) and (LSFrom == LSTo) ->
- % Hack
- SNode = join(Node, "/"),
- retrieve_disco_publish({LTo, LSTo}, SNode);
+ retrieve_disco_publish({LTo, LSTo}, Node);
true ->
empty
end;
get_publish_items(Acc, _From, _To, _Node, _Lang) ->
Acc.
-join(List, Sep) ->
- lists:foldl(fun(A, "") -> A;
- (A, Acc) -> Acc ++ Sep ++ A
- end, "", List).
-
process_disco_publish(User, Node, Items) ->
F = fun() ->
lists:foreach(