aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_local.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2003-01-22 20:40:40 +0000
committerAlexey Shchepin <alexey@process-one.net>2003-01-22 20:40:40 +0000
commitdcfaa68b7d80feae550168eca252e485acbd6974 (patch)
tree7ec4e25c8a76cfe1c01217bd410abaa5bdf6e254 /src/ejabberd_local.erl
parent*** empty log message *** (diff)
*** empty log message ***
SVN Revision: 47
Diffstat (limited to 'src/ejabberd_local.erl')
-rw-r--r--src/ejabberd_local.erl36
1 files changed, 23 insertions, 13 deletions
diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl
index ddae487be..88cea3354 100644
--- a/src/ejabberd_local.erl
+++ b/src/ejabberd_local.erl
@@ -12,7 +12,8 @@
-export([start/0, init/0]).
--export([register_iq_handler/3]).
+-export([register_iq_handler/3,
+ register_iq_handler/4]).
-include("ejabberd.hrl").
@@ -20,17 +21,17 @@
start() ->
register(ejabberd_local, spawn(ejabberd_local, init, [])),
- mod_register:start(),
- mod_roster:start(),
- mod_configure:start(),
- mod_disco:start(),
- mod_stats:start(),
- mod_vcard:start(),
- mod_offline:start(),
- mod_echo:start(),
- mod_private:start(),
- mod_time:start(),
- mod_version:start(),
+ %mod_register:start(one_queue),
+ %mod_roster:start(one_queue),
+ %mod_configure:start(one_queue),
+ %mod_disco:start(one_queue),
+ %mod_stats:start(one_queue),
+ %mod_vcard:start(one_queue),
+ %mod_offline:start(),
+ %mod_echo:start(),
+ %mod_private:start(one_queue),
+ %mod_time:start(one_queue),
+ %mod_version:start(one_queue),
ok.
init() ->
@@ -47,6 +48,10 @@ loop(State) ->
{register_iq_handler, XMLNS, Module, Function} ->
ets:insert(State#state.iqtable, {XMLNS, Module, Function}),
mod_disco:register_feature(XMLNS),
+ loop(State);
+ {register_iq_handler, XMLNS, Module, Function, Opts} ->
+ ets:insert(State#state.iqtable, {XMLNS, Module, Function, Opts}),
+ mod_disco:register_feature(XMLNS),
loop(State)
end.
@@ -82,7 +87,6 @@ process_iq(State, From, To, Packet) ->
{iq, ID, Type, XMLNS, SubEl} ->
case jlib:is_iq_request_type(Type) of
true ->
- % TODO
case ets:lookup(State#state.iqtable, XMLNS) of
[{_, Module, Function}] ->
ResIQ = apply(Module, Function, [From, To, IQ]),
@@ -95,6 +99,9 @@ process_iq(State, From, To, Packet) ->
true ->
ok
end;
+ [{_, Module, Function, Opts}] ->
+ gen_iq_handler:handle(Module, Function, Opts,
+ From, To, IQ);
[] ->
Err = jlib:make_error_reply(
Packet, "501", "Not Implemented"),
@@ -118,3 +125,6 @@ process_iq(State, From, To, Packet) ->
register_iq_handler(XMLNS, Module, Fun) ->
ejabberd_local ! {register_iq_handler, XMLNS, Module, Fun}.
+
+register_iq_handler(XMLNS, Module, Fun, Opts) ->
+ ejabberd_local ! {register_iq_handler, XMLNS, Module, Fun, Opts}.