]> granicus.if.org Git - ejabberd/commitdiff
Remove 'iqdisc' option
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Sun, 11 Feb 2018 09:54:15 +0000 (12:54 +0300)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Sun, 11 Feb 2018 09:54:15 +0000 (12:54 +0300)
Since we got rid of all bottle-neck processes and we have
a connection pool for every database, the option is no longer
needed and in fact is detrimental: in practice what you get
is just a bunch of overloaded processes in the IQ handlers pool
no matter how much you increase the `iqdisc` value.

Given that there are close to zero operators understanding
the meaning of the option and, hence, not using it all,
it's not simply deprecated but completely removed.

The commit also deprecates the following functions:
- gen_iq_handler:add_iq_handler/6
- gen_iq_handler:handle/5
- gen_iq_handler:iqdisc/1

33 files changed:
src/ejabberd_captcha.erl
src/ejabberd_local.erl
src/ejabberd_sm.erl
src/ejabberd_sup.erl
src/gen_iq_handler.erl
src/mod_adhoc.erl
src/mod_blocking.erl
src/mod_carboncopy.erl
src/mod_delegation.erl
src/mod_disco.erl
src/mod_irc.erl
src/mod_last.erl
src/mod_mam.erl
src/mod_mix.erl
src/mod_muc.erl
src/mod_offline.erl
src/mod_ping.erl
src/mod_privacy.erl
src/mod_private.erl
src/mod_proxy65.erl
src/mod_proxy65_service.erl
src/mod_pubsub.erl
src/mod_push.erl
src/mod_register.erl
src/mod_roster.erl
src/mod_sic.erl
src/mod_stats.erl
src/mod_time.erl
src/mod_vcard.erl
src/mod_version.erl
test/mod_legacy.erl
test/mod_roster_mock.exs
tools/hook_deps.sh

index 3fad361fd7b028277a802d102e110ae8154fb283..a70ad124161b4c827647e6d6e868d2d3715792c9 100644 (file)
@@ -283,9 +283,8 @@ process(_Handlers, _Request) ->
     ejabberd_web:error(not_found).
 
 host_up(Host) ->
-    IQDisc = gen_iq_handler:iqdisc(Host),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_CAPTCHA,
-                                 ?MODULE, process_iq, IQDisc).
+                                 ?MODULE, process_iq).
 
 host_down(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_CAPTCHA).
index 31861ea6fa1ba12c993bd1b810c555bfc8e5ec94..9d75c69f2e74eb4733c7424af70b1d4a4375a4b8 100644 (file)
@@ -34,7 +34,7 @@
 
 -export([route/1, process_iq/1,
         get_features/1,
-        register_iq_handler/5,
+        register_iq_handler/4,
         unregister_iq_handler/2,
         bounce_resource_packet/1,
         host_up/1, host_down/1]).
@@ -78,8 +78,8 @@ process_iq(#iq{to = To, type = T, lang = Lang, sub_els = [El]} = Packet)
     XMLNS = xmpp:get_ns(El),
     Host = To#jid.lserver,
     case ets:lookup(?IQTABLE, {Host, XMLNS}) of
-       [{_, Module, Function, Opts}] ->
-           gen_iq_handler:handle(Host, Module, Function, Opts, Packet);
+       [{_, Module, Function}] ->
+           gen_iq_handler:handle(Host, Module, Function, Packet);
        [] ->
            Txt = <<"No module is handling this query">>,
            Err = xmpp:err_service_unavailable(Txt, Lang),
@@ -112,11 +112,10 @@ route_iq(IQ, Fun) ->
 route_iq(IQ, Fun, Timeout) ->
     ejabberd_router:route_iq(IQ, Fun, undefined, Timeout).
 
--spec register_iq_handler(binary(), binary(), module(), function(),
-                         gen_iq_handler:opts()) -> ok.
-register_iq_handler(Host, XMLNS, Module, Fun, Opts) ->
+-spec register_iq_handler(binary(), binary(), module(), function()) -> ok.
+register_iq_handler(Host, XMLNS, Module, Fun) ->
     gen_server:cast(?MODULE,
-                   {register_iq_handler, Host, XMLNS, Module, Fun, Opts}).
+                   {register_iq_handler, Host, XMLNS, Module, Fun}).
 
 -spec unregister_iq_handler(binary(), binary()) -> ok.
 unregister_iq_handler(Host, XMLNS) ->
@@ -160,19 +159,13 @@ init([]) ->
 handle_call(_Request, _From, State) ->
     Reply = ok, {reply, Reply, State}.
 
-handle_cast({register_iq_handler, Host, XMLNS, Module,
-            Function, Opts},
+handle_cast({register_iq_handler, Host, XMLNS, Module, Function},
            State) ->
     ets:insert(?IQTABLE,
-              {{Host, XMLNS}, Module, Function, Opts}),
+              {{Host, XMLNS}, Module, Function}),
     {noreply, State};
 handle_cast({unregister_iq_handler, Host, XMLNS},
            State) ->
-    case ets:lookup(?IQTABLE, {Host, XMLNS}) of
-      [{_, Module, Function, Opts}] ->
-         gen_iq_handler:stop_iq_handler(Module, Function, Opts);
-      _ -> ok
-    end,
     ets:delete(?IQTABLE, {Host, XMLNS}),
     {noreply, State};
 handle_cast(_Msg, State) -> {noreply, State}.
index a74b96ce4ae1bf7363adaec05c5560c11af45277..8a9893437cf71fe2c36068fd33b770e64ec416de 100644 (file)
@@ -58,7 +58,7 @@
         get_vh_session_list/1,
         get_vh_session_number/1,
         get_vh_by_backend/1,
-        register_iq_handler/5,
+        register_iq_handler/4,
         unregister_iq_handler/2,
         force_update_presence/1,
         connected_users/0,
@@ -397,11 +397,11 @@ get_vh_session_number(Server) ->
     Mod = get_sm_backend(LServer),
     length(online(get_sessions(Mod, LServer))).
 
--spec register_iq_handler(binary(), binary(), atom(), atom(), list()) -> ok.
+-spec register_iq_handler(binary(), binary(), atom(), atom()) -> ok.
 
-register_iq_handler(Host, XMLNS, Module, Fun, Opts) ->
+register_iq_handler(Host, XMLNS, Module, Fun) ->
     ?GEN_SERVER:cast(?MODULE,
-                   {register_iq_handler, Host, XMLNS, Module, Fun, Opts}).
+                   {register_iq_handler, Host, XMLNS, Module, Fun}).
 
 -spec unregister_iq_handler(binary(), binary()) -> ok.
 
@@ -448,19 +448,13 @@ init([]) ->
 handle_call(_Request, _From, State) ->
     Reply = ok, {reply, Reply, State}.
 
-handle_cast({register_iq_handler, Host, XMLNS, Module,
-            Function, Opts},
+handle_cast({register_iq_handler, Host, XMLNS, Module, Function},
            State) ->
     ets:insert(sm_iqtable,
-              {{Host, XMLNS}, Module, Function, Opts}),
+              {{Host, XMLNS}, Module, Function}),
     {noreply, State};
 handle_cast({unregister_iq_handler, Host, XMLNS},
            State) ->
-    case ets:lookup(sm_iqtable, {Host, XMLNS}) of
-      [{_, Module, Function, Opts}] ->
-         gen_iq_handler:stop_iq_handler(Module, Function, Opts);
-      _ -> ok
-    end,
     ets:delete(sm_iqtable, {Host, XMLNS}),
     {noreply, State};
 handle_cast(_Msg, State) -> {noreply, State}.
@@ -862,8 +856,8 @@ process_iq(#iq{to = To, type = T, lang = Lang, sub_els = [El]} = Packet)
     XMLNS = xmpp:get_ns(El),
     Host = To#jid.lserver,
     case ets:lookup(sm_iqtable, {Host, XMLNS}) of
-       [{_, Module, Function, Opts}] ->
-           gen_iq_handler:handle(Host, Module, Function, Opts, Packet);
+       [{_, Module, Function}] ->
+           gen_iq_handler:handle(Host, Module, Function, Packet);
        [] ->
            Txt = <<"No module is handling this query">>,
            Err = xmpp:err_service_unavailable(Txt, Lang),
index 5980937fee7c583f786b97e2f7e018276bf7b135..e829ea61da57cd0abfc7c8ffa7fd0516944bec46 100644 (file)
@@ -92,14 +92,6 @@ init([]) ->
         infinity,
         supervisor,
         [ejabberd_tmp_sup]},
-    IQSupervisor =
-       {ejabberd_iq_sup,
-        {ejabberd_tmp_sup, start_link,
-         [ejabberd_iq_sup, gen_iq_handler]},
-        permanent,
-        infinity,
-        supervisor,
-        [ejabberd_tmp_sup]},
     BackendSupervisor = {ejabberd_backend_sup,
                         {ejabberd_backend_sup, start_link, []},
                         permanent, infinity, supervisor,
@@ -169,7 +161,6 @@ init([]) ->
           S2SInSupervisor,
           S2SOutSupervisor,
           ServiceSupervisor,
-          IQSupervisor,
           ACL,
           Shaper,
           BackendSupervisor,
index f1c9e4cc205a341fbdfba982c62a8613f941fc73..0982a9f46714c8c600bcfa1ba2a398d8f23fd52c 100644 (file)
 
 -author('alexey@process-one.net').
 
--ifndef(GEN_SERVER).
--define(GEN_SERVER, gen_server).
--endif.
--behaviour(?GEN_SERVER).
 -behaviour(ejabberd_config).
 
 %% API
--export([start_link/3, add_iq_handler/6,
-        remove_iq_handler/3, stop_iq_handler/3, handle/5,
+-export([add_iq_handler/5, remove_iq_handler/3, handle/4,
         process_iq/4, check_type/1, transform_module_options/1,
-        opt_type/1, iqdisc/1]).
-
-%% gen_server callbacks
--export([init/1, handle_call/3, handle_cast/2,
-        handle_info/2, terminate/2, code_change/3]).
+        opt_type/1]).
+%% Deprecated functions
+-export([add_iq_handler/6, handle/5, iqdisc/1]).
+-deprecated([{add_iq_handler, 6}, {handle, 5}, {iqdisc, 1}]).
 
 -include("ejabberd.hrl").
 -include("logger.hrl").
 -include("xmpp.hrl").
 
--record(state, {host, module, function}).
-
 -type component() :: ejabberd_sm | ejabberd_local.
--type type() :: no_queue | one_queue | pos_integer() | parallel.
--type opts() :: no_queue | {one_queue, pid()} | {queues, [pid()]} | parallel.
--export_type([opts/0, type/0]).
 
 %%====================================================================
 %% API
 %%====================================================================
-%%--------------------------------------------------------------------
-%% Function: start_link() -> {ok,Pid} | ignore | {error,Error}
-%% Description: Starts the server
-%%--------------------------------------------------------------------
-start_link(Host, Module, Function) ->
-    ?GEN_SERVER:start_link(?MODULE, [Host, Module, Function],
-                         []).
-
--spec add_iq_handler(module(), binary(), binary(), module(), atom(), type()) -> ok.
-
-add_iq_handler(Component, Host, NS, Module, Function,
-              Type) ->
-    case Type of
-       no_queue ->
-           Component:register_iq_handler(Host, NS, Module,
-               Function, no_queue);
-       one_queue ->
-           {ok, Pid} = supervisor:start_child(ejabberd_iq_sup,
-                   [Host, Module, Function]),
-           Component:register_iq_handler(Host, NS, Module,
-               Function, {one_queue, Pid});
-       N when is_integer(N) ->
-           Pids = lists:map(fun (_) ->
-                           {ok, Pid} =
-                               supervisor:start_child(ejabberd_iq_sup,
-                                   [Host, Module,
-                                       Function]),
-                           Pid
-                   end,
-                   lists:seq(1, N)),
-           Component:register_iq_handler(Host, NS, Module,
-               Function, {queues, Pids});
-       parallel ->
-           Component:register_iq_handler(Host, NS, Module,
-               Function, parallel)
-    end.
+-spec add_iq_handler(module(), binary(), binary(), module(), atom()) -> ok.
+add_iq_handler(Component, Host, NS, Module, Function) ->
+    Component:register_iq_handler(Host, NS, Module, Function).
 
 -spec remove_iq_handler(component(), binary(), binary()) -> ok.
-
 remove_iq_handler(Component, Host, NS) ->
     Component:unregister_iq_handler(Host, NS).
 
--spec stop_iq_handler(atom(), atom(), [pid()]) -> any().
-
-stop_iq_handler(_Module, _Function, Opts) ->
-    case Opts of
-      {one_queue, Pid} -> ?GEN_SERVER:call(Pid, stop);
-      {queues, Pids} ->
-         lists:foreach(fun (Pid) ->
-                               catch ?GEN_SERVER:call(Pid, stop)
-                       end,
-                       Pids);
-      _ -> ok
-    end.
-
--spec handle(binary(), atom(), atom(), opts(), iq()) -> any().
-
-handle(Host, Module, Function, Opts, IQ) ->
-    case Opts of
-       no_queue ->
-           process_iq(Host, Module, Function, IQ);
-       {one_queue, Pid} ->
-           Pid ! {process_iq, IQ};
-       {queues, Pids} ->
-           Pid = lists:nth(erlang:phash(p1_time_compat:unique_integer(),
-                                         length(Pids)), Pids),
-           Pid ! {process_iq, IQ};
-       parallel ->
-           spawn(?MODULE, process_iq, [Host, Module, Function, IQ]);
-       _ -> todo
-    end.
+-spec handle(binary(), atom(), atom(), iq()) -> any().
+handle(Host, Module, Function, IQ) ->
+    process_iq(Host, Module, Function, IQ).
 
 -spec process_iq(binary(), atom(), atom(), iq()) -> any().
-
 process_iq(_Host, Module, Function, IQ) ->
     try
        ResIQ = case erlang:function_exported(Module, Function, 1) of
@@ -178,15 +106,14 @@ process_iq(Module, Function, From, To, IQ) ->
              To, From)
     end.
 
--spec check_type(type()) -> type().
+-spec check_type(any()) -> no_queue.
+check_type(_Type) ->
+    ?WARNING_MSG("Option 'iqdisc' is deprecated and has no effect anymore", []),
+    no_queue.
 
-check_type(no_queue) -> no_queue;
-check_type(one_queue) -> one_queue;
-check_type(N) when is_integer(N), N>0 -> N;
-check_type(parallel) -> parallel.
-
-iqdisc(Host) ->
-    ejabberd_config:get_option({iqdisc, Host}, no_queue).
+-spec iqdisc(binary() | global) -> no_queue.
+iqdisc(_Host) ->
+    no_queue.
 
 -spec transform_module_options([{atom(), any()}]) -> [{atom(), any()}].
 
@@ -198,37 +125,18 @@ transform_module_options(Opts) ->
               Opt
       end, Opts).
 
--spec opt_type(iqdisc) -> fun((type()) -> type());
+-spec opt_type(iqdisc) -> fun((any()) -> no_queue);
              (atom()) -> [atom()].
 opt_type(iqdisc) -> fun check_type/1;
 opt_type(_) -> [iqdisc].
 
 %%====================================================================
-%% gen_server callbacks
+%% Deprecated API
 %%====================================================================
+-spec add_iq_handler(module(), binary(), binary(), module(), atom(), any()) -> ok.
+add_iq_handler(Component, Host, NS, Module, Function, _Type) ->
+    add_iq_handler(Component, Host, NS, Module, Function).
 
-init([Host, Module, Function]) ->
-    {ok,
-     #state{host = Host, module = Module,
-           function = Function}}.
-
-handle_call(stop, _From, State) ->
-    Reply = ok, {stop, normal, Reply, State}.
-
-handle_cast(_Msg, State) -> {noreply, State}.
-
-handle_info({process_iq, IQ},
-           #state{host = Host, module = Module,
-                  function = Function} =
-               State) ->
-    process_iq(Host, Module, Function, IQ),
-    {noreply, State};
-handle_info(_Info, State) -> {noreply, State}.
-
-terminate(_Reason, _State) -> ok.
-
-code_change(_OldVsn, State, _Extra) -> {ok, State}.
-
-%%--------------------------------------------------------------------
-%%% Internal functions
-%%--------------------------------------------------------------------
+-spec handle(binary(), atom(), atom(), any(), iq()) -> any().
+handle(Host, Module, Function, _Opts, IQ) ->
+    handle(Host, Module, Function, IQ).
index 4944bd0113251bfc7485ad77562f2c30a67f02ff..f0b889c5de83e842ed3a2d441418c109bf4becf5 100644 (file)
 -include("logger.hrl").
 -include("xmpp.hrl").
 
-start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
+start(Host, _Opts) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host,
-                                 ?NS_COMMANDS, ?MODULE, process_local_iq,
-                                 IQDisc),
+                                 ?NS_COMMANDS, ?MODULE, process_local_iq),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                 ?NS_COMMANDS, ?MODULE, process_sm_iq, IQDisc),
+                                 ?NS_COMMANDS, ?MODULE, process_sm_iq),
     ejabberd_hooks:add(disco_local_identity, Host, ?MODULE,
                       get_local_identity, 99),
     ejabberd_hooks:add(disco_local_features, Host, ?MODULE,
@@ -88,16 +86,8 @@ stop(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host,
                                     ?NS_COMMANDS).
 
-reload(Host, NewOpts, OldOpts) ->
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_COMMANDS,
-                                         ?MODULE, process_local_iq, IQDisc),
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_COMMANDS,
-                                         ?MODULE, process_sm_iq, IQDisc);
-       true ->
-           ok
-    end.
+reload(_Host, _NewOpts, _OldOpts) ->
+    ok.
 
 %-------------------------------------------------------------------------
 
@@ -280,10 +270,8 @@ ping_command(Acc, _From, _To, _Request) -> Acc.
 depends(_Host, _Opts) ->
     [].
 
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(report_commands_node) ->
     fun (B) when is_boolean(B) -> B end.
 
-mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)},
-     {report_commands_node, false}].
+mod_options(_Host) ->
+    [{report_commands_node, false}].
index c10adf553a9d8037c7435adbd8fadc65188f87e6..dc49ccb1115affd59d20c25507cf29c844e557cf 100644 (file)
@@ -29,7 +29,7 @@
 
 -protocol({xep, 191, '1.2'}).
 
--export([start/2, stop/1, reload/3, process_iq/1, mod_opt_type/1, depends/2,
+-export([start/2, stop/1, reload/3, process_iq/1, depends/2,
         disco_features/5, mod_options/1]).
 
 -include("ejabberd.hrl").
 
 -include("mod_privacy.hrl").
 
-start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
+start(Host, _Opts) ->
     ejabberd_hooks:add(disco_local_features, Host, ?MODULE, disco_features, 50),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                 ?NS_BLOCKING, ?MODULE, process_iq, IQDisc).
+                                 ?NS_BLOCKING, ?MODULE, process_iq).
 
 stop(Host) ->
     ejabberd_hooks:delete(disco_local_features, Host, ?MODULE, disco_features, 50),
     gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_BLOCKING).
 
-reload(Host, NewOpts, OldOpts) ->
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_BLOCKING,
-                                         ?MODULE, process_iq, IQDisc);
-       true ->
-           ok
-    end.
+reload(_Host, _NewOpts, _OldOpts) ->
+    ok.
 
 depends(_Host, _Opts) ->
     [{mod_privacy, hard}].
@@ -267,7 +260,5 @@ err_db_failure(#iq{lang = Lang} = IQ) ->
     Txt = <<"Database failure">>,
     xmpp:make_error(IQ, xmpp:err_internal_server_error(Txt, Lang)).
 
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1.
-
-mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)}].
+mod_options(_Host) ->
+    [].
index cbd7078c346a70df84ae5bf7dc75a5df96da4164..de0c7fc85f9c00dea7ac27f32f9289dcbe7e6b6b 100644 (file)
@@ -62,7 +62,6 @@ is_carbon_copy(_) ->
     false.
 
 start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     ejabberd_hooks:add(disco_local_features, Host, ?MODULE, disco_features, 50),
     Mod = gen_mod:ram_db_mod(Host, ?MODULE),
     init_cache(Mod, Host, Opts),
@@ -72,7 +71,7 @@ start(Host, Opts) ->
     %% why priority 89: to define clearly that we must run BEFORE mod_logdb hook (90)
     ejabberd_hooks:add(user_send_packet,Host, ?MODULE, user_send_packet, 89),
     ejabberd_hooks:add(user_receive_packet,Host, ?MODULE, user_receive_packet, 89),
-    gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_CARBONS_2, ?MODULE, iq_handler, IQDisc).
+    gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_CARBONS_2, ?MODULE, iq_handler).
 
 stop(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_CARBONS_2),
@@ -95,13 +94,6 @@ reload(Host, NewOpts, OldOpts) ->
            ets_cache:new(?CARBONCOPY_CACHE, cache_opts(NewOpts));
        false ->
            ok
-    end,
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_CARBONS_2,
-                                         ?MODULE, iq_handler, IQDisc);
-       true ->
-           ok
     end.
 
 -spec disco_features({error, stanza_error()} | {result, [binary()]} | empty,
@@ -378,7 +370,6 @@ delete_cache(Mod, User, Server) ->
 depends(_Host, _Opts) ->
     [].
 
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(ram_db_type) -> fun(T) -> ejabberd_config:v_db(?MODULE, T) end;
 mod_opt_type(O) when O == use_cache; O == cache_missed ->
     fun(B) when is_boolean(B) -> B end;
@@ -389,8 +380,7 @@ mod_opt_type(O) when O == cache_size; O == cache_life_time ->
     end.
 
 mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)},
-     {ram_db_type, ejabberd_config:default_ram_db(Host, ?MODULE)},
+    [{ram_db_type, ejabberd_config:default_ram_db(Host, ?MODULE)},
      {use_cache, ejabberd_config:use_cache(Host)},
      {cache_size, ejabberd_config:cache_size(Host)},
      {cache_missed, ejabberd_config:cache_missed(Host)},
index 9822e81fd5302e240dd0337719e53c745c3139b5..1dd8fb72461793032d80d705f54fadd2e5a8d814 100644 (file)
@@ -61,7 +61,6 @@ stop(Host) ->
 reload(_Host, _NewOpts, _OldOpts) ->
     ok.
 
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(namespaces) ->
     fun(L) ->
            lists:map(
@@ -72,9 +71,8 @@ mod_opt_type(namespaces) ->
              end, L)
     end.
 
-mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)},
-     {namespaces, []}].
+mod_options(_Host) ->
+    [{namespaces, []}].
 
 depends(_, _) ->
     [].
@@ -295,7 +293,7 @@ process_disco_info(State, Type, Host, NS, Info) ->
                           sub_els = [#delegation{delegated = [#delegated{ns = NS}]}]},
            Delegations = dict:store({NS, Type}, {Host, Info}, State#state.delegations),
            gen_iq_handler:add_iq_handler(Type, State#state.server_host, NS,
-                                         ?MODULE, Type, gen_iq_handler:iqdisc(Host)),
+                                         ?MODULE, Type),
            ejabberd_router:route(Msg),
            ?INFO_MSG("Namespace '~s' is delegated to external component '~s'",
                      [NS, Host]),
index d6dbd7101e087ac1a4086754b445cff2685f2b74..a04369de4192bba06de709da3fd209954c5bb59a 100644 (file)
 -type items_acc() :: {error, stanza_error()} | {result, [disco_item()]} | empty.
 
 start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host,
                                  ?NS_DISCO_ITEMS, ?MODULE,
-                                 process_local_iq_items, IQDisc),
+                                 process_local_iq_items),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host,
                                  ?NS_DISCO_INFO, ?MODULE,
-                                 process_local_iq_info, IQDisc),
+                                 process_local_iq_info),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                 ?NS_DISCO_ITEMS, ?MODULE, process_sm_iq_items,
-                                 IQDisc),
+                                 ?NS_DISCO_ITEMS, ?MODULE, process_sm_iq_items),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                 ?NS_DISCO_INFO, ?MODULE, process_sm_iq_info,
-                                 IQDisc),
+                                 ?NS_DISCO_INFO, ?MODULE, process_sm_iq_info),
     catch ets:new(disco_extra_domains,
                  [named_table, ordered_set, public,
                   {heir, erlang:group_leader(), none}]),
@@ -128,23 +125,6 @@ reload(Host, NewOpts, OldOpts) ->
              end, OldDomains -- NewDomains);
        true ->
            ok
-    end,
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_local, Host,
-                                         ?NS_DISCO_ITEMS, ?MODULE,
-                                         process_local_iq_items, IQDisc),
-           gen_iq_handler:add_iq_handler(ejabberd_local, Host,
-                                         ?NS_DISCO_INFO, ?MODULE,
-                                         process_local_iq_info, IQDisc),
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                         ?NS_DISCO_ITEMS, ?MODULE, process_sm_iq_items,
-                                         IQDisc),
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                         ?NS_DISCO_INFO, ?MODULE, process_sm_iq_info,
-                                         IQDisc);
-       true ->
-           ok
     end.
 
 -spec register_extra_domain(binary(), binary()) -> true.
@@ -458,7 +438,6 @@ depends(_Host, _Opts) ->
 
 mod_opt_type(extra_domains) ->
     fun (Hs) -> [iolist_to_binary(H) || H <- Hs] end;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(name) -> fun iolist_to_binary/1;
 mod_opt_type(server_info) ->
     fun (L) ->
@@ -471,8 +450,7 @@ mod_opt_type(server_info) ->
                      L)
     end.
 
-mod_options(Host) ->
+mod_options(_Host) ->
     [{extra_domains, []},
-     {iqdisc, gen_iq_handler:iqdisc(Host)},
      {server_info, []},
      {name, ?T("ejabberd")}].
index 27d5c0f3b6e8e71e905c7f9249fb62f695fc2044..254f05b58d472fc75ca4a8e740fbd7fc09ad9aba 100644 (file)
@@ -101,10 +101,9 @@ init([Host, Opts]) ->
     catch ets:new(irc_connection,
                  [named_table, public,
                   {keypos, #irc_connection.jid_server_host}]),
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     lists:foreach(
       fun(MyHost) ->
-             register_hooks(MyHost, IQDisc),
+             register_hooks(MyHost),
              ejabberd_router:register_route(MyHost, Host)
       end, MyHosts),
     {ok,
@@ -132,8 +131,6 @@ handle_call(stop, _From, State) ->
 handle_cast({reload, ServerHost, NewOpts, OldOpts}, State) ->
     NewHosts = gen_mod:get_opt_hosts(ServerHost, NewOpts),
     OldHosts = gen_mod:get_opt_hosts(ServerHost, OldOpts),
-    NewIQDisc = gen_mod:get_opt(iqdisc, NewOpts),
-    OldIQDisc = gen_mod:get_opt(iqdisc, OldOpts),
     NewMod = gen_mod:db_mod(ServerHost, NewOpts, ?MODULE),
     OldMod = gen_mod:db_mod(ServerHost, OldOpts, ?MODULE),
     Access = gen_mod:get_opt(access, NewOpts),
@@ -142,18 +139,10 @@ handle_cast({reload, ServerHost, NewOpts, OldOpts}, State) ->
        true ->
            ok
     end,
-    if (NewIQDisc /= OldIQDisc) ->
-           lists:foreach(
-             fun(NewHost) ->
-                     register_hooks(NewHost, NewIQDisc)
-             end, NewHosts -- (NewHosts -- OldHosts));
-       true ->
-           ok
-    end,
     lists:foreach(
       fun(NewHost) ->
              ejabberd_router:register_route(NewHost, ServerHost),
-             register_hooks(NewHost, NewIQDisc)
+             register_hooks(NewHost)
       end, NewHosts -- OldHosts),
     lists:foreach(
       fun(OldHost) ->
@@ -207,17 +196,17 @@ code_change(_OldVsn, State, _Extra) -> {ok, State}.
 %%--------------------------------------------------------------------
 %%% Internal functions
 %%--------------------------------------------------------------------
-register_hooks(Host, IQDisc) ->
+register_hooks(Host) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_DISCO_INFO,
-                                 ?MODULE, process_disco_info, IQDisc),
+                                 ?MODULE, process_disco_info),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_DISCO_ITEMS,
-                                 ?MODULE, process_disco_items, IQDisc),
+                                 ?MODULE, process_disco_items),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_REGISTER,
-                                 ?MODULE, process_register, IQDisc),
+                                 ?MODULE, process_register),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_VCARD,
-                                 ?MODULE, process_vcard, IQDisc),
+                                 ?MODULE, process_vcard),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_COMMANDS,
-                                 ?MODULE, process_command, IQDisc).
+                                 ?MODULE, process_command).
 
 unregister_hooks(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_DISCO_INFO),
@@ -989,13 +978,11 @@ mod_opt_type(hosts) ->
 mod_opt_type(realname) ->
     fun iolist_to_binary/1;
 mod_opt_type(webirc_password) ->
-    fun iolist_to_binary/1;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1.
+    fun iolist_to_binary/1.
 
 mod_options(Host) ->
     [{access, all},
      {db_type, ejabberd_config:default_db(Host, ?MODULE)},
-     {iqdisc, gen_iq_handler:iqdisc(Host)},
      {default_encoding, <<"iso8859-15">>},
      {host, <<"irc.@HOST@">>},
      {hosts, []},
index d69a5acac3fa7d09d934b639cd6d5ffe28a74a03..e6232e67c1d85e2e98b4c7a6762fda4dfbc3e44b 100644 (file)
 -optional_callbacks([use_cache/1, cache_nodes/1]).
 
 start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
     Mod:init(Host, Opts),
     init_cache(Mod, Host, Opts),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host,
-                                 ?NS_LAST, ?MODULE, process_local_iq, IQDisc),
+                                 ?NS_LAST, ?MODULE, process_local_iq),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                 ?NS_LAST, ?MODULE, process_sm_iq, IQDisc),
+                                 ?NS_LAST, ?MODULE, process_sm_iq),
     ejabberd_hooks:add(privacy_check_packet, Host, ?MODULE,
                       privacy_check_packet, 30),
     ejabberd_hooks:add(register_user, Host, ?MODULE,
@@ -98,16 +97,7 @@ reload(Host, NewOpts, OldOpts) ->
        true ->
            ok
     end,
-    init_cache(NewMod, Host, NewOpts),
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_LAST,
-                                         ?MODULE, process_local_iq, IQDisc),
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_LAST,
-                                         ?MODULE, process_sm_iq, IQDisc);
-       true ->
-           ok
-    end.
+    init_cache(NewMod, Host, NewOpts).
 
 %%%
 %%% Uptime of ejabberd node
@@ -331,7 +321,6 @@ depends(_Host, _Opts) ->
     [].
 
 mod_opt_type(db_type) -> fun(T) -> ejabberd_config:v_db(?MODULE, T) end;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(O) when O == cache_life_time; O == cache_size ->
     fun (I) when is_integer(I), I > 0 -> I;
         (infinity) -> infinity
@@ -340,8 +329,7 @@ mod_opt_type(O) when O == use_cache; O == cache_missed ->
     fun (B) when is_boolean(B) -> B end.
 
 mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)},
-     {db_type, ejabberd_config:default_db(Host, ?MODULE)},
+    [{db_type, ejabberd_config:default_db(Host, ?MODULE)},
      {use_cache, ejabberd_config:use_cache(Host)},
      {cache_size, ejabberd_config:cache_size(Host)},
      {cache_missed, ejabberd_config:cache_missed(Host)},
index 97033bafb3fdbb5d6f30e5e521da47bc12587345..bc80d47ede1dea42f1830d30ddce2add737c2b05 100644 (file)
 %%% API
 %%%===================================================================
 start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
     Mod:init(Host, Opts),
     init_cache(Host, Opts),
-    register_iq_handlers(Host, IQDisc),
+    register_iq_handlers(Host),
     ejabberd_hooks:add(sm_receive_packet, Host, ?MODULE,
                       sm_receive_packet, 50),
     ejabberd_hooks:add(user_receive_packet, Host, ?MODULE,
@@ -187,12 +186,6 @@ reload(Host, NewOpts, OldOpts) ->
            ok
     end,
     ets_cache:setopts(archive_prefs_cache, cache_opts(NewOpts)),
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           register_iq_handlers(Host, IQDisc);
-       true ->
-           ok
-    end,
     case gen_mod:is_equal_opt(assume_mam_usage, NewOpts, OldOpts) of
        {false, true, _} ->
            ejabberd_hooks:add(message_is_archived, Host, ?MODULE,
@@ -207,24 +200,24 @@ reload(Host, NewOpts, OldOpts) ->
 depends(_Host, _Opts) ->
     [].
 
--spec register_iq_handlers(binary(), gen_iq_handler:type()) -> ok.
-register_iq_handlers(Host, IQDisc) ->
+-spec register_iq_handlers(binary()) -> ok.
+register_iq_handlers(Host) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_MAM_TMP,
-                                 ?MODULE, process_iq_v0_2, IQDisc),
+                                 ?MODULE, process_iq_v0_2),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MAM_TMP,
-                                 ?MODULE, process_iq_v0_2, IQDisc),
+                                 ?MODULE, process_iq_v0_2),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_MAM_0,
-                                 ?MODULE, process_iq_v0_3, IQDisc),
+                                 ?MODULE, process_iq_v0_3),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MAM_0, ?MODULE,
-                                 process_iq_v0_3, IQDisc),
+                                 process_iq_v0_3),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_MAM_1,
-                                 ?MODULE, process_iq_v0_3, IQDisc),
+                                 ?MODULE, process_iq_v0_3),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MAM_1,
-                                 ?MODULE, process_iq_v0_3, IQDisc),
+                                 ?MODULE, process_iq_v0_3),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_MAM_2,
-                                 ?MODULE, process_iq_v0_3, IQDisc),
+                                 ?MODULE, process_iq_v0_3),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MAM_2,
-                                 ?MODULE, process_iq_v0_3, IQDisc).
+                                 ?MODULE, process_iq_v0_3).
 
 -spec unregister_iq_handlers(binary()) -> ok.
 unregister_iq_handlers(Host) ->
@@ -1076,7 +1069,6 @@ mod_opt_type(default) ->
        (never) -> never;
        (roster) -> roster
     end;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(request_activates_archiving) ->
     fun (B) when is_boolean(B) -> B end.
 
@@ -1084,7 +1076,6 @@ mod_options(Host) ->
     [{assume_mam_usage, false},
      {default, never},
      {request_activates_archiving, false},
-     {iqdisc, gen_iq_handler:iqdisc(Host)},
      {db_type, ejabberd_config:default_db(Host, ?MODULE)},
      {use_cache, ejabberd_config:use_cache(Host)},
      {cache_size, ejabberd_config:cache_size(Host)},
index fc51a5a024562c25917d769741b9d0fd00e81486..51464e63fe03e4e110a6325bdf3e3d00f0f9a856 100644 (file)
@@ -125,7 +125,6 @@ process_iq(#iq{lang = Lang} = IQ) ->
 init([ServerHost, Opts]) ->
     process_flag(trap_exit, true),
     Hosts = gen_mod:get_opt_hosts(ServerHost, Opts),
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     lists:foreach(
       fun(Host) ->
              ConfigTab = gen_mod:get_module_proc(Host, config),
@@ -140,20 +139,20 @@ init([ServerHost, Opts]) ->
              ejabberd_hooks:add(disco_info, Host, ?MODULE, disco_info, 100),
              gen_iq_handler:add_iq_handler(ejabberd_local, Host,
                                            ?NS_DISCO_ITEMS, mod_disco,
-                                           process_local_iq_items, IQDisc),
+                                           process_local_iq_items),
              gen_iq_handler:add_iq_handler(ejabberd_local, Host,
                                            ?NS_DISCO_INFO, mod_disco,
-                                           process_local_iq_info, IQDisc),
+                                           process_local_iq_info),
              gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
                                            ?NS_DISCO_ITEMS, mod_disco,
-                                           process_local_iq_items, IQDisc),
+                                           process_local_iq_items),
              gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
                                            ?NS_DISCO_INFO, mod_disco,
-                                           process_local_iq_info, IQDisc),
+                                           process_local_iq_info),
              gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                           ?NS_PUBSUB, mod_pubsub, iq_sm, IQDisc),
+                                           ?NS_PUBSUB, mod_pubsub, iq_sm),
              gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                           ?NS_MIX_0, ?MODULE, process_iq, IQDisc),
+                                           ?NS_MIX_0, ?MODULE, process_iq),
              ejabberd_router:register_route(Host, ServerHost)
       end, Hosts),
     {ok, #state{server_host = ServerHost, hosts = Hosts}}.
@@ -316,12 +315,10 @@ is_not_subscribed({error, StanzaError}) ->
 depends(_Host, _Opts) ->
     [{mod_pubsub, hard}].
 
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(host) -> fun iolist_to_binary/1;
 mod_opt_type(hosts) ->
     fun (L) -> lists:map(fun iolist_to_binary/1, L) end.
 
-mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)},
-     {host, <<"mix.@HOST@">>},
+mod_options(_Host) ->
+    [{host, <<"mix.@HOST@">>},
      {hosts, []}].
index 0cf03fa812b9b0c96acb65cd05a0bec922c33f1a..acfbb90a04c25acaf920062aa87ddcb7e41ba950 100644 (file)
@@ -233,7 +233,6 @@ get_online_rooms_by_user(ServerHost, LUser, LServer) ->
 
 init([Host, Opts]) ->
     process_flag(trap_exit, true),
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     #state{access = Access, hosts = MyHosts,
           history_size = HistorySize, queue_type = QueueType,
           room_shaper = RoomShaper} = State = init_state(Host, Opts),
@@ -243,7 +242,7 @@ init([Host, Opts]) ->
     RMod:init(Host, [{hosts, MyHosts}|Opts]),
     lists:foreach(
       fun(MyHost) ->
-             register_iq_handlers(MyHost, IQDisc),
+             register_iq_handlers(MyHost),
              ejabberd_router:register_route(MyHost, Host),
              load_permanent_rooms(MyHost, Host, Access, HistorySize,
                                   RoomShaper, QueueType)
@@ -273,8 +272,6 @@ handle_call({create, Room, Host, From, Nick, Opts}, _From,
     {reply, ok, State}.
 
 handle_cast({reload, ServerHost, NewOpts, OldOpts}, #state{hosts = OldHosts}) ->
-    NewIQDisc = gen_mod:get_opt(iqdisc, NewOpts),
-    OldIQDisc = gen_mod:get_opt(iqdisc, OldOpts),
     NewMod = gen_mod:db_mod(ServerHost, NewOpts, ?MODULE),
     NewRMod = gen_mod:ram_db_mod(ServerHost, NewOpts, ?MODULE),
     OldMod = gen_mod:db_mod(ServerHost, OldOpts, ?MODULE),
@@ -290,18 +287,10 @@ handle_cast({reload, ServerHost, NewOpts, OldOpts}, #state{hosts = OldHosts}) ->
        true ->
            ok
     end,
-    if (NewIQDisc /= OldIQDisc) ->
-           lists:foreach(
-             fun(NewHost) ->
-                     register_iq_handlers(NewHost, NewIQDisc)
-             end, NewHosts -- (NewHosts -- OldHosts));
-       true ->
-           ok
-    end,
     lists:foreach(
       fun(NewHost) ->
              ejabberd_router:register_route(NewHost, ServerHost),
-             register_iq_handlers(NewHost, NewIQDisc)
+             register_iq_handlers(NewHost)
       end, NewHosts -- OldHosts),
     lists:foreach(
       fun(OldHost) ->
@@ -372,19 +361,19 @@ init_state(Host, Opts) ->
           max_rooms_discoitems = MaxRoomsDiscoItems,
           room_shaper = RoomShaper}.
 
-register_iq_handlers(Host, IQDisc) ->
+register_iq_handlers(Host) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_REGISTER,
-                                 ?MODULE, process_register, IQDisc),
+                                 ?MODULE, process_register),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_VCARD,
-                                 ?MODULE, process_vcard, IQDisc),
+                                 ?MODULE, process_vcard),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_MUCSUB,
-                                 ?MODULE, process_mucsub, IQDisc),
+                                 ?MODULE, process_mucsub),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_MUC_UNIQUE,
-                                 ?MODULE, process_muc_unique, IQDisc),
+                                 ?MODULE, process_muc_unique),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_DISCO_INFO,
-                                 ?MODULE, process_disco_info, IQDisc),
+                                 ?MODULE, process_disco_info),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_DISCO_ITEMS,
-                                 ?MODULE, process_disco_items, IQDisc).
+                                 ?MODULE, process_disco_items).
 
 unregister_iq_handlers(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_REGISTER),
@@ -972,8 +961,7 @@ mod_opt_type({default_room_options, presence_broadcast}) ->
                 (participant) -> participant;
                 (visitor) -> visitor
              end, L)
-    end;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1.
+    end.
 
 mod_options(Host) ->
     [{access, all},
@@ -982,7 +970,6 @@ mod_options(Host) ->
      {access_persistent, all},
      {db_type, ejabberd_config:default_db(Host, ?MODULE)},
      {ram_db_type, ejabberd_config:default_ram_db(Host, ?MODULE)},
-     {iqdisc, gen_iq_handler:iqdisc(Host)},
      {history_size, 20},
      {host, <<"conference.@HOST@">>},
      {hosts, []},
index 6b32fc98c07d39c836ef231a0e87ecfffeacb660..83d092ba1e70c2da1272f63d0a4b0e0817e0154f 100644 (file)
@@ -108,7 +108,6 @@ depends(_Host, _Opts) ->
 start(Host, Opts) ->
     Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
     Mod:init(Host, Opts),
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     ejabberd_hooks:add(offline_message_hook, Host, ?MODULE,
                       store_packet, 50),
     ejabberd_hooks:add(c2s_self_presence, Host, ?MODULE, c2s_self_presence, 50),
@@ -132,7 +131,7 @@ start(Host, Opts) ->
     ejabberd_hooks:add(webadmin_user_parse_query, Host,
                       ?MODULE, webadmin_user_parse_query, 50),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_FLEX_OFFLINE,
-                                 ?MODULE, handle_offline_query, IQDisc).
+                                 ?MODULE, handle_offline_query).
 
 stop(Host) ->
     ejabberd_hooks:delete(offline_message_hook, Host,
@@ -162,13 +161,6 @@ reload(Host, NewOpts, OldOpts) ->
            NewMod:init(Host, NewOpts);
        true ->
            ok
-    end,
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_FLEX_OFFLINE,
-                                         ?MODULE, handle_offline_query, IQDisc);
-       true ->
-           ok
     end.
 
 -spec store_offline_msg(#offline_msg{}) -> ok | {error, full | any()}.
@@ -849,11 +841,9 @@ mod_opt_type(db_type) -> fun(T) -> ejabberd_config:v_db(?MODULE, T) end;
 mod_opt_type(store_empty_body) ->
     fun (V) when is_boolean(V) -> V;
         (unless_chat_state) -> unless_chat_state
-    end;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1.
+    end.
 
 mod_options(Host) ->
     [{db_type, ejabberd_config:default_db(Host, ?MODULE)},
-     {iqdisc, gen_iq_handler:iqdisc(Host)},
      {access_max_user_messages, max_user_offline_messages},
      {store_empty_body, unless_chat_state}].
index ec2c465e50706027f4fd316f850755570f102596..9939fb89c07a7c8a8003e4878333cb0351db1f62 100644 (file)
@@ -91,8 +91,7 @@ reload(Host, NewOpts, OldOpts) ->
 init([Host, Opts]) ->
     process_flag(trap_exit, true),
     State = init_state(Host, Opts),
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
-    register_iq_handlers(Host, IQDisc),
+    register_iq_handlers(Host),
     case State#state.send_pings of
        true -> register_hooks(Host);
        false -> ok
@@ -108,12 +107,8 @@ handle_call(stop, _From, State) ->
 handle_call(_Req, _From, State) ->
     {reply, {error, badarg}, State}.
 
-handle_cast({reload, Host, NewOpts, OldOpts},
+handle_cast({reload, Host, NewOpts, _OldOpts},
            #state{timers = Timers} = OldState) ->
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} -> register_iq_handlers(Host, IQDisc);
-       true -> ok
-    end,
     NewState = init_state(Host, NewOpts),
     case {NewState#state.send_pings, OldState#state.send_pings} of
        {true, false} -> register_hooks(Host);
@@ -219,11 +214,11 @@ unregister_hooks(Host) ->
     ejabberd_hooks:delete(user_send_packet, Host, ?MODULE,
                          user_send, 100).
 
-register_iq_handlers(Host, IQDisc) ->
+register_iq_handlers(Host) ->
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_PING,
-                                 ?MODULE, iq_ping, IQDisc),
+                                 ?MODULE, iq_ping),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_PING,
-                                 ?MODULE, iq_ping, IQDisc).
+                                 ?MODULE, iq_ping).
 
 unregister_iq_handlers(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_PING),
@@ -263,7 +258,6 @@ cancel_timer(TRef) ->
 depends(_Host, _Opts) ->
     [].
 
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(ping_interval) ->
     fun (I) when is_integer(I), I > 0 -> I end;
 mod_opt_type(ping_ack_timeout) ->
@@ -277,9 +271,8 @@ mod_opt_type(timeout_action) ->
        (kill) -> kill
     end.
 
-mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)},
-     {ping_interval, 60},
+mod_options(_Host) ->
+    [{ping_interval, 60},
      {ping_ack_timeout, undefined},
      {send_pings, false},
      {timeout_action, none}].
index 5dcd697205753121510973f1f48e51da5e49c658..cae9d8f9f3a8b97952ba8c265aa49ea6bbd84c10 100644 (file)
@@ -70,7 +70,6 @@
 -optional_callbacks([use_cache/1, cache_nodes/1]).
 
 start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
     Mod:init(Host, Opts),
     init_cache(Mod, Host, Opts),
@@ -87,7 +86,7 @@ start(Host, Opts) ->
     ejabberd_hooks:add(remove_user, Host, ?MODULE,
                       remove_user, 50),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                 ?NS_PRIVACY, ?MODULE, process_iq, IQDisc).
+                                 ?NS_PRIVACY, ?MODULE, process_iq).
 
 stop(Host) ->
     ejabberd_hooks:delete(disco_local_features, Host, ?MODULE,
@@ -113,14 +112,7 @@ reload(Host, NewOpts, OldOpts) ->
        true ->
            ok
     end,
-    init_cache(NewMod, Host, NewOpts),
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_PRIVACY,
-                                         ?MODULE, process_iq, IQDisc);
-       true ->
-           ok
-    end.
+    init_cache(NewMod, Host, NewOpts).
 
 -spec disco_features({error, stanza_error()} | {result, [binary()]} | empty,
                     jid(), jid(), binary(), binary()) ->
@@ -837,7 +829,6 @@ depends(_Host, _Opts) ->
     [].
 
 mod_opt_type(db_type) -> fun(T) -> ejabberd_config:v_db(?MODULE, T) end;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(O) when O == cache_life_time; O == cache_size ->
     fun (I) when is_integer(I), I > 0 -> I;
         (infinity) -> infinity
@@ -846,8 +837,7 @@ mod_opt_type(O) when O == use_cache; O == cache_missed ->
     fun (B) when is_boolean(B) -> B end.
 
 mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)},
-     {db_type, ejabberd_config:default_db(Host, ?MODULE)},
+    [{db_type, ejabberd_config:default_db(Host, ?MODULE)},
      {use_cache, ejabberd_config:use_cache(Host)},
      {cache_size, ejabberd_config:cache_size(Host)},
      {cache_missed, ejabberd_config:cache_missed(Host)},
index f5000ed9c3361f634cf9970ef70dba41d51b83d2..9c36265293dafb915433d9b6850b9086dfbc10bc 100644 (file)
 -optional_callbacks([use_cache/1, cache_nodes/1]).
 
 start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
     Mod:init(Host, Opts),
     init_cache(Mod, Host, Opts),
     ejabberd_hooks:add(remove_user, Host, ?MODULE,
                       remove_user, 50),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                 ?NS_PRIVATE, ?MODULE, process_sm_iq, IQDisc).
+                                 ?NS_PRIVATE, ?MODULE, process_sm_iq).
 
 stop(Host) ->
     ejabberd_hooks:delete(remove_user, Host, ?MODULE,
@@ -78,14 +77,7 @@ reload(Host, NewOpts, OldOpts) ->
        true ->
            ok
     end,
-    init_cache(NewMod, Host, NewOpts),
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_PRIVATE,
-                                         ?MODULE, process_sm_iq, IQDisc);
-       true ->
-           ok
-    end.
+    init_cache(NewMod, Host, NewOpts).
 
 -spec process_sm_iq(iq()) -> iq().
 process_sm_iq(#iq{type = Type, lang = Lang,
@@ -258,7 +250,6 @@ depends(_Host, _Opts) ->
     [].
 
 mod_opt_type(db_type) -> fun(T) -> ejabberd_config:v_db(?MODULE, T) end;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(O) when O == cache_life_time; O == cache_size ->
     fun (I) when is_integer(I), I > 0 -> I;
         (infinity) -> infinity
@@ -267,8 +258,7 @@ mod_opt_type(O) when O == use_cache; O == cache_missed ->
     fun (B) when is_boolean(B) -> B end.
 
 mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)},
-     {db_type, ejabberd_config:default_db(Host, ?MODULE)},
+    [{db_type, ejabberd_config:default_db(Host, ?MODULE)},
      {use_cache, ejabberd_config:use_cache(Host)},
      {cache_size, ejabberd_config:cache_size(Host)},
      {cache_missed, ejabberd_config:cache_missed(Host)},
index eb6950c60a4b0f1a371fbf532df4c2e7a4e939d6..5a348a819cc9a3e014ea24d71da0ada4d4969fa3 100644 (file)
@@ -137,14 +137,11 @@ mod_opt_type(max_connections) ->
     end;
 mod_opt_type(ram_db_type) ->
     fun(T) -> ejabberd_config:v_db(?MODULE, T) end;
-mod_opt_type(iqdisc) ->
-    fun gen_iq_handler:check_type/1;
 mod_opt_type(Opt) ->
     mod_proxy65_stream:listen_opt_type(Opt).
 
 mod_options(Host) ->
     [{ram_db_type, ejabberd_config:default_ram_db(Host, ?MODULE)},
-     {iqdisc, gen_iq_handler:iqdisc(Host)},
      {access, all},
      {host, <<"proxy.@HOST@">>},
      {hosts, []},
index f81874694d8221c9b7e7c2479f4e5684d5b5efa5..daa93eaa640d7dbb6967a1ab55ff0fcd0f1e7b8a 100644 (file)
@@ -61,18 +61,17 @@ reload(Host, NewOpts, OldOpts) ->
 
 init([Host, Opts]) ->
     process_flag(trap_exit, true),
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     MyHosts = gen_mod:get_opt_hosts(Host, Opts),
     lists:foreach(
       fun(MyHost) ->
              gen_iq_handler:add_iq_handler(ejabberd_local, MyHost, ?NS_DISCO_INFO,
-                                           ?MODULE, process_disco_info, IQDisc),
+                                           ?MODULE, process_disco_info),
              gen_iq_handler:add_iq_handler(ejabberd_local, MyHost, ?NS_DISCO_ITEMS,
-                                           ?MODULE, process_disco_items, IQDisc),
+                                           ?MODULE, process_disco_items),
              gen_iq_handler:add_iq_handler(ejabberd_local, MyHost, ?NS_VCARD,
-                                           ?MODULE, process_vcard, IQDisc),
+                                           ?MODULE, process_vcard),
              gen_iq_handler:add_iq_handler(ejabberd_local, MyHost, ?NS_BYTESTREAMS,
-                                           ?MODULE, process_bytestreams, IQDisc),
+                                           ?MODULE, process_bytestreams),
              ejabberd_router:register_route(MyHost, Host)
       end, MyHosts),
     {ok, #state{myhosts = MyHosts}}.
@@ -95,20 +94,10 @@ handle_call(_Request, _From, State) ->
 handle_cast({reload, ServerHost, NewOpts, OldOpts}, State) ->
     NewHosts = gen_mod:get_opt_hosts(ServerHost, NewOpts),
     OldHosts = gen_mod:get_opt_hosts(ServerHost, OldOpts),
-    NewIQDisc = gen_mod:get_opt(iqdisc, NewOpts),
-    OldIQDisc = gen_mod:get_opt(iqdisc, OldOpts),
-    if (NewIQDisc /= OldIQDisc) ->
-           lists:foreach(
-             fun(NewHost) ->
-                     register_handlers(NewHost, NewIQDisc)
-             end, NewHosts -- (NewHosts -- OldHosts));
-       true ->
-           ok
-    end,
     lists:foreach(
       fun(NewHost) ->
              ejabberd_router:register_route(NewHost, ServerHost),
-             register_handlers(NewHost, NewIQDisc)
+             register_handlers(NewHost)
       end, NewHosts -- OldHosts),
     lists:foreach(
       fun(OldHost) ->
@@ -282,15 +271,15 @@ get_my_ip() ->
 max_connections(ServerHost) ->
     gen_mod:get_module_opt(ServerHost, mod_proxy65, max_connections).
 
-register_handlers(Host, IQDisc) ->
+register_handlers(Host) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_DISCO_INFO,
-                                 ?MODULE, process_disco_info, IQDisc),
+                                 ?MODULE, process_disco_info),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_DISCO_ITEMS,
-                                 ?MODULE, process_disco_items, IQDisc),
+                                 ?MODULE, process_disco_items),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_VCARD,
-                                 ?MODULE, process_vcard, IQDisc),
+                                 ?MODULE, process_vcard),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_BYTESTREAMS,
-                                 ?MODULE, process_bytestreams, IQDisc).
+                                 ?MODULE, process_bytestreams).
 
 unregister_handlers(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_DISCO_INFO),
index 80c93b4a7e482e3bda51ffb3d93f4bdef3e64a86..cd9aedef2d283a5093ca3a02827aac9a7c43c506 100644 (file)
@@ -244,7 +244,6 @@ init([ServerHost, Opts]) ->
     Hosts = gen_mod:get_opt_hosts(ServerHost, Opts),
     Access = gen_mod:get_opt(access_createnode, Opts),
     PepOffline = gen_mod:get_opt(ignore_pep_from_offline, Opts),
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     LastItemCache = gen_mod:get_opt(last_item_cache, Opts),
     MaxItemsNode = gen_mod:get_opt(max_items_node, Opts),
     MaxSubsNode = gen_mod:get_opt(max_subscriptions_node, Opts),
@@ -284,17 +283,17 @@ init([ServerHost, Opts]) ->
                            end
                    end, [Host, ServerHost]),
                  gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_DISCO_INFO,
-                                               ?MODULE, process_disco_info, IQDisc),
+                                               ?MODULE, process_disco_info),
                  gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_DISCO_ITEMS,
-                                               ?MODULE, process_disco_items, IQDisc),
+                                               ?MODULE, process_disco_items),
                  gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_PUBSUB,
-                                               ?MODULE, process_pubsub, IQDisc),
+                                               ?MODULE, process_pubsub),
                  gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_PUBSUB_OWNER,
-                                               ?MODULE, process_pubsub_owner, IQDisc),
+                                               ?MODULE, process_pubsub_owner),
                  gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_VCARD,
-                                               ?MODULE, process_vcard, IQDisc),
+                                               ?MODULE, process_vcard),
                  gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_COMMANDS,
-                                               ?MODULE, process_commands, IQDisc),
+                                               ?MODULE, process_commands),
                  Plugins
          end, Hosts),
     ejabberd_hooks:add(c2s_self_presence, ServerHost,
@@ -330,9 +329,9 @@ init([ServerHost, Opts]) ->
            ejabberd_hooks:add(disco_sm_items, ServerHost,
                ?MODULE, disco_sm_items, 75),
            gen_iq_handler:add_iq_handler(ejabberd_sm, ServerHost,
-               ?NS_PUBSUB, ?MODULE, iq_sm, IQDisc),
+               ?NS_PUBSUB, ?MODULE, iq_sm),
            gen_iq_handler:add_iq_handler(ejabberd_sm, ServerHost,
-               ?NS_PUBSUB_OWNER, ?MODULE, iq_sm, IQDisc);
+               ?NS_PUBSUB_OWNER, ?MODULE, iq_sm);
        false ->
            ok
     end,
@@ -3856,7 +3855,6 @@ mod_opt_type(hosts) ->
     fun (L) -> lists:map(fun iolist_to_binary/1, L) end;
 mod_opt_type(ignore_pep_from_offline) ->
     fun (A) when is_boolean(A) -> A end;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(last_item_cache) ->
     fun (A) when is_boolean(A) -> A end;
 mod_opt_type(max_items_node) ->
@@ -3881,7 +3879,6 @@ mod_options(Host) ->
      {hosts, []},
      {name, ?T("Publish-Subscribe")},
      {ignore_pep_from_offline, true},
-     {iqdisc, gen_iq_handler:iqdisc(Host)},
      {last_item_cache, false},
      {max_items_node, ?MAXITEMS},
      {nodetree, ?STDTREE},
index 4b917e382220ca2ecbf0f7af024b56a2036a96ee..21bc1375cbf12847ca5cf90ee2a2195d33574c5f 100644 (file)
 %%--------------------------------------------------------------------
 -spec start(binary(), gen_mod:opts()) -> ok.
 start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
     Mod:init(Host, Opts),
     init_cache(Mod, Host, Opts),
-    register_iq_handlers(Host, IQDisc),
+    register_iq_handlers(Host),
     register_hooks(Host),
     ejabberd_commands:register_commands(get_commands_spec()).
 
@@ -119,12 +118,6 @@ reload(Host, NewOpts, OldOpts) ->
            NewMod:init(Host, NewOpts);
        true ->
            ok
-    end,
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           register_iq_handlers(Host, IQDisc);
-       true ->
-           ok
     end.
 
 -spec depends(binary(), gen_mod:opts()) -> [{module(), hard | soft}].
@@ -139,13 +132,10 @@ mod_opt_type(O) when O == cache_life_time; O == cache_size ->
        (infinity) -> infinity
     end;
 mod_opt_type(O) when O == use_cache; O == cache_missed ->
-    fun (B) when is_boolean(B) -> B end;
-mod_opt_type(iqdisc) ->
-    fun gen_iq_handler:check_type/1.
+    fun (B) when is_boolean(B) -> B end.
 
 mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)},
-     {db_type, ejabberd_config:default_db(Host, ?MODULE)},
+    [{db_type, ejabberd_config:default_db(Host, ?MODULE)},
      {use_cache, ejabberd_config:use_cache(Host)},
      {cache_size, ejabberd_config:cache_size(Host)},
      {cache_missed, ejabberd_config:cache_missed(Host)},
@@ -249,10 +239,10 @@ disco_sm_features(Acc, _From, _To, _Node, _Lang) ->
 %%--------------------------------------------------------------------
 %% IQ handlers.
 %%--------------------------------------------------------------------
--spec register_iq_handlers(binary(), gen_iq_handler:type()) -> ok.
-register_iq_handlers(Host, IQDisc) ->
+-spec register_iq_handlers(binary()) -> ok.
+register_iq_handlers(Host) ->
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_PUSH_0,
-                                 ?MODULE, process_iq, IQDisc).
+                                 ?MODULE, process_iq).
 
 -spec unregister_iq_handlers(binary()) -> ok.
 unregister_iq_handlers(Host) ->
index b9dabe16d8ca172f6b3ccf288dc8695a374914e9..38df8e225b89fc9065414db37ee021bbc98a15d2 100644 (file)
 -include("logger.hrl").
 -include("xmpp.hrl").
 
-start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
+start(Host, _Opts) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host,
-                                 ?NS_REGISTER, ?MODULE, process_iq, IQDisc),
+                                 ?NS_REGISTER, ?MODULE, process_iq),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                 ?NS_REGISTER, ?MODULE, process_iq, IQDisc),
+                                 ?NS_REGISTER, ?MODULE, process_iq),
     ejabberd_hooks:add(c2s_pre_auth_features, Host, ?MODULE,
                       stream_feature_register, 50),
     ejabberd_hooks:add(c2s_unauthenticated_packet, Host,
@@ -68,16 +67,8 @@ stop(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_sm, Host,
                                     ?NS_REGISTER).
 
-reload(Host, NewOpts, OldOpts) ->
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_REGISTER,
-                                         ?MODULE, process_iq, IQDisc),
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_REGISTER,
-                                         ?MODULE, process_iq, IQDisc);
-       true ->
-           ok
-    end.
+reload(_Host, _NewOpts, _OldOpts) ->
+    ok.
 
 depends(_Host, _Opts) ->
     [].
@@ -608,7 +599,6 @@ mod_opt_type(access_remove) -> fun acl:access_rules_validator/1;
 mod_opt_type(captcha_protected) ->
     fun (B) when is_boolean(B) -> B end;
 mod_opt_type(ip_access) -> fun acl:access_rules_validator/1;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(password_strength) ->
     fun (N) when is_number(N), N >= 0 -> N end;
 mod_opt_type(registration_watchers) ->
@@ -627,13 +617,12 @@ mod_opt_type({welcome_message, body}) ->
 mod_opt_type(redirect_url) ->
     fun iolist_to_binary/1.
 
-mod_options(Host) ->
+mod_options(_Host) ->
     [{access, all},
      {access_from, none},
      {access_remove, all},
      {captcha_protected, false},
      {ip_access, all},
-     {iqdisc, gen_iq_handler:iqdisc(Host)},
      {password_strength, 0},
      {registration_watchers, []},
      {redirect_url, <<"">>},
index ed2a58887c1c87a3233c3d5953727cd2270ad72a..3b893d21dcbaa132af4f0b359bb5cb24053a67f4 100644 (file)
@@ -88,7 +88,6 @@
 -optional_callbacks([use_cache/2, cache_nodes/1]).
 
 start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
     Mod:init(Host, Opts),
     init_cache(Mod, Host, Opts),
@@ -111,7 +110,7 @@ start(Host, Opts) ->
     ejabberd_hooks:add(webadmin_user, Host, ?MODULE,
                       webadmin_user, 50),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                 ?NS_ROSTER, ?MODULE, process_iq, IQDisc).
+                                 ?NS_ROSTER, ?MODULE, process_iq).
 
 stop(Host) ->
     ejabberd_hooks:delete(roster_get, Host, ?MODULE,
@@ -142,13 +141,6 @@ reload(Host, NewOpts, OldOpts) ->
            NewMod:init(Host, NewOpts);
        true ->
            ok
-    end,
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_ROSTER,
-                                         ?MODULE, process_iq, IQDisc);
-       true ->
-           ok
     end.
 
 depends(_Host, _Opts) ->
@@ -1205,7 +1197,6 @@ import(LServer, {sql, _}, DBType, <<"roster_version">>, [LUser, Ver]) ->
 mod_opt_type(access) ->
     fun acl:access_rules_validator/1;
 mod_opt_type(db_type) -> fun(T) -> ejabberd_config:v_db(?MODULE, T) end;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(store_current_id) ->
     fun (B) when is_boolean(B) -> B end;
 mod_opt_type(versioning) ->
@@ -1221,7 +1212,6 @@ mod_options(Host) ->
     [{access, all},
      {store_current_id, false},
      {versioning, false},
-     {iqdisc, gen_iq_handler:iqdisc(Host)},
      {db_type, ejabberd_config:default_db(Host, ?MODULE)},
      {use_cache, ejabberd_config:use_cache(Host)},
      {cache_size, ejabberd_config:cache_size(Host)},
index 6a417b9b00321fd543740e9750de9bd0ead81f7d..ef043c642197e24483bc4198f54359453b9a53b0 100644 (file)
 -behaviour(gen_mod).
 
 -export([start/2, stop/1, reload/3, process_local_iq/1,
-        process_sm_iq/1, mod_opt_type/1, mod_options/1, depends/2]).
+        process_sm_iq/1, mod_options/1, depends/2]).
 
 -include("ejabberd.hrl").
 -include("logger.hrl").
 -include("xmpp.hrl").
 
-start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
+start(Host, _Opts) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_SIC_0,
-                                 ?MODULE, process_local_iq, IQDisc),
+                                 ?MODULE, process_local_iq),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_SIC_0,
-                                 ?MODULE, process_sm_iq, IQDisc),    
+                                 ?MODULE, process_sm_iq),    
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_SIC_1,
-                                 ?MODULE, process_local_iq, IQDisc),
+                                 ?MODULE, process_local_iq),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_SIC_1,
-                                 ?MODULE, process_sm_iq, IQDisc).
+                                 ?MODULE, process_sm_iq).
 
 stop(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_SIC_0),
@@ -55,20 +54,8 @@ stop(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_SIC_1),
     gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_SIC_1).
 
-reload(Host, NewOpts, OldOpts) ->
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_SIC_0,
-                                         ?MODULE, process_local_iq, IQDisc),
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_SIC_0,
-                                         ?MODULE, process_sm_iq, IQDisc),
-           gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_SIC_1,
-                                         ?MODULE, process_local_iq, IQDisc),
-           gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_SIC_1,
-                                         ?MODULE, process_sm_iq, IQDisc);
-       true ->
-           ok
-    end.
+reload(_Host, _NewOpts, _OldOpts) ->
+    ok.
 
 depends(_Host, _Opts) ->
     [].
@@ -107,7 +94,5 @@ get_ip({User, Server, Resource},
            xmpp:make_error(IQ, xmpp:err_item_not_found(Txt, Lang))
     end.
 
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1.
-
-mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)}].
+mod_options(_Host) ->
+    [].
index af7ad7195bd25d08563d33774b4c03f62e17ec5b..1973352594c0b7e63082ffcbec7b55894fb92c58 100644 (file)
 
 -behaviour(gen_mod).
 
--export([start/2, stop/1, reload/3, process_iq/1, mod_opt_type/1,
+-export([start/2, stop/1, reload/3, process_iq/1,
         mod_options/1, depends/2]).
 
 -include("ejabberd.hrl").
 -include("logger.hrl").
 -include("xmpp.hrl").
 
-start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
+start(Host, _Opts) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_STATS,
-                                 ?MODULE, process_iq, IQDisc).
+                                 ?MODULE, process_iq).
 
 stop(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_STATS).
@@ -234,7 +233,5 @@ search_running_node(SNode, [Node | Nodes]) ->
       _ -> search_running_node(SNode, Nodes)
     end.
 
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1.
-
-mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)}].
+mod_options(_Host) ->
+    [].
index d4dffbf10719d866ed5a987c2e0f7e90b7c0d85d..3ecd0ae477a384a41c600141120a09da13075b22 100644 (file)
 -behaviour(gen_mod).
 
 -export([start/2, stop/1, reload/3, process_local_iq/1,
-        mod_opt_type/1, mod_options/1, depends/2]).
+        mod_options/1, depends/2]).
 
 -include("ejabberd.hrl").
 -include("logger.hrl").
 
 -include("xmpp.hrl").
 
-start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
+start(Host, _Opts) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host,
-                                 ?NS_TIME, ?MODULE, process_local_iq, IQDisc).
+                                 ?NS_TIME, ?MODULE, process_local_iq).
 
 stop(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host,
                                     ?NS_TIME).
 
-reload(Host, NewOpts, OldOpts) ->
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_TIME,
-                                         ?MODULE, process_local_iq, IQDisc);
-       true ->
-           ok
-    end.
+reload(_Host, _NewOpts, _OldOpts) ->
+    ok.
 
 process_local_iq(#iq{type = set, lang = Lang} = IQ) ->
     Txt = <<"Value 'set' of 'type' attribute is not allowed">>,
@@ -74,7 +67,5 @@ process_local_iq(#iq{type = get} = IQ) ->
 depends(_Host, _Opts) ->
     [].
 
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1.
-
-mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)}].
+mod_options(_Host) ->
+    [].
index fbbf59b84534a1bf49e2f458bb0a7cf052f4f136..41ef929891c9ed1444edf1eef4b6cf30b411665c 100644 (file)
@@ -88,11 +88,10 @@ init([Host, Opts]) ->
     init_cache(Mod, Host, Opts),
     ejabberd_hooks:add(remove_user, Host, ?MODULE,
                       remove_user, 50),
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
     gen_iq_handler:add_iq_handler(ejabberd_local, Host,
-                                 ?NS_VCARD, ?MODULE, process_local_iq, IQDisc),
+                                 ?NS_VCARD, ?MODULE, process_local_iq),
     gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
-                                 ?NS_VCARD, ?MODULE, process_sm_iq, IQDisc),
+                                 ?NS_VCARD, ?MODULE, process_sm_iq),
     ejabberd_hooks:add(disco_sm_features, Host, ?MODULE,
                       get_sm_features, 50),
     ejabberd_hooks:add(vcard_iq_set, Host, ?MODULE, vcard_iq_set, 50),
@@ -108,15 +107,15 @@ init([Host, Opts]) ->
                      ejabberd_hooks:add(
                        disco_local_identity, MyHost, ?MODULE, disco_identity, 100),
                      gen_iq_handler:add_iq_handler(
-                       ejabberd_local, MyHost, ?NS_SEARCH, ?MODULE, process_search, IQDisc),
+                       ejabberd_local, MyHost, ?NS_SEARCH, ?MODULE, process_search),
                      gen_iq_handler:add_iq_handler(
-                       ejabberd_local, MyHost, ?NS_VCARD, ?MODULE, process_vcard, IQDisc),
+                       ejabberd_local, MyHost, ?NS_VCARD, ?MODULE, process_vcard),
                      gen_iq_handler:add_iq_handler(
                        ejabberd_local, MyHost, ?NS_DISCO_ITEMS, mod_disco,
-                       process_local_iq_items, IQDisc),
+                       process_local_iq_items),
                      gen_iq_handler:add_iq_handler(
                        ejabberd_local, MyHost, ?NS_DISCO_INFO, mod_disco,
-                       process_local_iq_info, IQDisc),
+                       process_local_iq_info),
                      case Mod:is_search_supported(Host) of
                          false ->
                              ?WARNING_MSG("vcard search functionality is "
@@ -538,7 +537,6 @@ mod_opt_type(name) -> fun iolist_to_binary/1;
 mod_opt_type(host) -> fun iolist_to_binary/1;
 mod_opt_type(hosts) ->
     fun (L) -> lists:map(fun iolist_to_binary/1, L) end;
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(matches) ->
     fun (infinity) -> infinity;
        (I) when is_integer(I), I > 0 -> I
@@ -559,7 +557,6 @@ mod_options(Host) ->
      {matches, 30},
      {search, false},
      {name, ?T("vCard User Search")},
-     {iqdisc, gen_iq_handler:iqdisc(Host)},
      {db_type, ejabberd_config:default_db(Host, ?MODULE)},
      {use_cache, ejabberd_config:use_cache(Host)},
      {cache_size, ejabberd_config:cache_size(Host)},
index 12051332b7ce768fdef27f059dca323facccd0dc..5d261dff758b51fcb9972cfa36e3ae49ca9f55bf 100644 (file)
 
 -include("xmpp.hrl").
 
-start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts),
+start(Host, _Opts) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host,
-                                 ?NS_VERSION, ?MODULE, process_local_iq,
-                                 IQDisc).
+                                 ?NS_VERSION, ?MODULE, process_local_iq).
 
 stop(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host,
                                     ?NS_VERSION).
 
-reload(Host, NewOpts, OldOpts) ->
-    case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts) of
-       {false, IQDisc, _} ->
-           gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_VERSION,
-                                         ?MODULE, process_local_iq, IQDisc);
-       true ->
-           ok
-    end.
+reload(_Host, _NewOpts, _OldOpts) ->
+    ok.
 
 process_local_iq(#iq{type = set, lang = Lang} = IQ) ->
     Txt = <<"Value 'set' of 'type' attribute is not allowed">>,
@@ -85,10 +77,8 @@ get_os() ->
 depends(_Host, _Opts) ->
     [].
 
-mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1;
 mod_opt_type(show_os) ->
     fun (B) when is_boolean(B) -> B end.
 
-mod_options(Host) ->
-    [{iqdisc, gen_iq_handler:iqdisc(Host)},
-     {show_os, true}].
+mod_options(_Host) ->
+    [{show_os, true}].
index 00fd4404050008ad39838719de747d5ebff57463..96c1e041f33dd4a99feb53162723f28a5c05912a 100644 (file)
 %%%===================================================================
 %%% API
 %%%===================================================================
-start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+start(Host, _Opts) ->
     gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_EVENT,
-                                 ?MODULE, process_iq, IQDisc).
+                                 ?MODULE, process_iq).
 
 stop(Host) ->
     gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?MODULE).
@@ -45,6 +44,9 @@ mod_opt_type(_) ->
 depends(_, _) ->
     [].
 
+mod_options(_) ->
+    [].
+
 %%%===================================================================
 %%% Internal functions
 %%%===================================================================
index bdbde2aad7738b48828cb406f44ac04c30cbb86b..83182c196d59de9fca5d7c69085c2fa7816edc57 100644 (file)
@@ -62,7 +62,7 @@ defmodule ModRosterMock do
 
                        roster_mock0 = :moka.start(:mod_roster)
                        :moka.replace(roster_mock0, :gen_iq_handler, :add_iq_handler,
-                               fn (_module, _host, _ns, _m, _f, _iqdisc)  ->
+                               fn (_module, _host, _ns, _m, _f)  ->
                                        :ok
                                end)
 
index a3a685a2faeee81162b4f46a7b64805adcb62fe3..633bb3b47f730cf35fd101aea1593e8583b75e9d 100755 (executable)
@@ -34,7 +34,8 @@ main([Dir]) ->
                                                {ejabberd_hooks, {add, N}}
                                                  when N == 4; N == 5 ->
                                                    analyze_run_fun(Form, Acc);
-                                               {gen_iq_handler, {add_iq_handler, 6}} ->
+                                               {gen_iq_handler, {add_iq_handler, N}}
+                                                 when N == 5; N == 6 ->
                                                    analyze_iq_handler(Form, Acc);
                                                _ ->
                                                    Acc
@@ -136,7 +137,7 @@ analyze_run_fun(Form, State) ->
     end.
 
 analyze_iq_handler(Form, State) ->
-    [_Component, _Host, _NS, Module, Function, _IQDisc] =
+    [_Component, _Host, _NS, Module, Function|_] =
        erl_syntax:application_arguments(Form),
     Mod = module_name(Module, State),
     Fun = atom_value(Function, State),