diff options
author | Alexey Shchepin <alexey@process-one.net> | 2003-12-17 23:13:21 +0300 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2003-12-17 23:13:21 +0300 |
commit | b3b09bcfd83ce7afe5349259a421e6424440df1c (patch) | |
tree | 2156729d2e4843e1eb0a262aa14664c76a35595e /src/ejabberd_local.erl | |
parent | 4768cd2f26173b4c699695e6e23d694776f13054 (diff) |
* src/jlib.hrl: Added declaration of "iq" record
* (all): Updated to use "iq" record
SVN Revision: 186
Diffstat (limited to 'src/ejabberd_local.erl')
-rw-r--r-- | src/ejabberd_local.erl | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl index 95597bbc2..cf46e73fc 100644 --- a/src/ejabberd_local.erl +++ b/src/ejabberd_local.erl @@ -106,31 +106,24 @@ do_route(State, From, To, Packet) -> process_iq(State, From, To, Packet) -> IQ = jlib:iq_query_info(Packet), case IQ of - {iq, _ID, Type, XMLNS, _SubEl} -> - case jlib:is_iq_request_type(Type) of - true -> - case ets:lookup(State#state.iqtable, XMLNS) of - [{_, Module, Function}] -> - ResIQ = apply(Module, Function, [From, To, IQ]), - if - ResIQ /= ignore -> - ejabberd_router ! {route, - To, - From, - jlib:iq_to_xml(ResIQ)}; - true -> - ok - end; - [{_, Module, Function, Opts}] -> - gen_iq_handler:handle(Module, Function, Opts, - From, To, IQ); - [] -> - Err = jlib:make_error_reply( - Packet, ?ERR_FEATURE_NOT_IMPLEMENTED), - ejabberd_router:route(To, From, Err) + #iq{xmlns = XMLNS} -> + case ets:lookup(State#state.iqtable, XMLNS) of + [{_, Module, Function}] -> + ResIQ = Module:Function(From, To, IQ), + if + ResIQ /= ignore -> + ejabberd_router:route( + To, From, jlib:iq_to_xml(ResIQ)); + true -> + ok end; - _ -> - ok + [{_, Module, Function, Opts}] -> + gen_iq_handler:handle(Module, Function, Opts, + From, To, IQ); + [] -> + Err = jlib:make_error_reply( + Packet, ?ERR_FEATURE_NOT_IMPLEMENTED), + ejabberd_router:route(To, From, Err) end; reply -> ok; |