diff options
author | Alexey Shchepin <alexey@process-one.net> | 2006-01-19 02:17:31 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2006-01-19 02:17:31 +0000 |
commit | 568909d5bb454fab2023e7ab1a7cf62eff8dcd39 (patch) | |
tree | 562acb2d39d04393e19bda367791a2d8f04e6289 /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 '')
-rw-r--r-- | src/mod_disco.erl | 41 |
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( |