aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-02-11 12:54:15 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-02-11 12:54:15 +0300
commit66fc1bf3b6cab63559fa58a086a1439ecdebfea7 (patch)
treecdc0ce2d21249f31060a1c302e4708abc507d10e
parentBump xmpp version (diff)
Remove 'iqdisc' option
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
-rw-r--r--src/ejabberd_captcha.erl3
-rw-r--r--src/ejabberd_local.erl23
-rw-r--r--src/ejabberd_sm.erl22
-rw-r--r--src/ejabberd_sup.erl9
-rw-r--r--src/gen_iq_handler.erl144
-rw-r--r--src/mod_adhoc.erl26
-rw-r--r--src/mod_blocking.erl23
-rw-r--r--src/mod_carboncopy.erl14
-rw-r--r--src/mod_delegation.erl8
-rw-r--r--src/mod_disco.erl32
-rw-r--r--src/mod_irc.erl31
-rw-r--r--src/mod_last.erl20
-rw-r--r--src/mod_mam.erl31
-rw-r--r--src/mod_mix.erl19
-rw-r--r--src/mod_muc.erl33
-rw-r--r--src/mod_offline.erl14
-rw-r--r--src/mod_ping.erl21
-rw-r--r--src/mod_privacy.erl16
-rw-r--r--src/mod_private.erl16
-rw-r--r--src/mod_proxy65.erl3
-rw-r--r--src/mod_proxy65_service.erl31
-rw-r--r--src/mod_pubsub.erl19
-rw-r--r--src/mod_push.erl22
-rw-r--r--src/mod_register.erl23
-rw-r--r--src/mod_roster.erl12
-rw-r--r--src/mod_sic.erl35
-rw-r--r--src/mod_stats.erl13
-rw-r--r--src/mod_time.erl23
-rw-r--r--src/mod_vcard.erl15
-rw-r--r--src/mod_version.erl22
-rw-r--r--test/mod_legacy.erl8
-rw-r--r--test/mod_roster_mock.exs2
-rwxr-xr-xtools/hook_deps.sh5
33 files changed, 198 insertions, 540 deletions
diff --git a/src/ejabberd_captcha.erl b/src/ejabberd_captcha.erl
index 3fad361fd..a70ad1241 100644
--- a/src/ejabberd_captcha.erl
+++ b/src/ejabberd_captcha.erl
@@ -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).
diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl
index 31861ea6f..9d75c69f2 100644
--- a/src/ejabberd_local.erl
+++ b/src/ejabberd_local.erl
@@ -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}.
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl
index a74b96ce4..8a9893437 100644
--- a/src/ejabberd_sm.erl
+++ b/src/ejabberd_sm.erl
@@ -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),
diff --git a/src/ejabberd_sup.erl b/src/ejabberd_sup.erl
index 5980937fe..e829ea61d 100644
--- a/src/ejabberd_sup.erl
+++ b/src/ejabberd_sup.erl
@@ -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,
diff --git a/src/gen_iq_handler.erl b/src/gen_iq_handler.erl
index f1c9e4cc2..0982a9f46 100644
--- a/src/gen_iq_handler.erl
+++ b/src/gen_iq_handler.erl
@@ -27,110 +27,38 @@
-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).
diff --git a/src/mod_adhoc.erl b/src/mod_adhoc.erl
index 4944bd011..f0b889c5d 100644
--- a/src/mod_adhoc.erl
+++ b/src/mod_adhoc.erl
@@ -42,13 +42,11 @@
-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}].
diff --git a/src/mod_blocking.erl b/src/mod_blocking.erl
index c10adf553..dc49ccb11 100644
--- a/src/mod_blocking.erl
+++ b/src/mod_blocking.erl
@@ -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").
@@ -39,24 +39,17 @@
-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) ->
+ [].
diff --git a/src/mod_carboncopy.erl b/src/mod_carboncopy.erl
index cbd7078c3..de0c7fc85 100644
--- a/src/mod_carboncopy.erl
+++ b/src/mod_carboncopy.erl
@@ -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)},
diff --git a/src/mod_delegation.erl b/src/mod_delegation.erl
index 9822e81fd..1dd8fb724 100644
--- a/src/mod_delegation.erl
+++ b/src/mod_delegation.erl
@@ -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]),
diff --git a/src/mod_disco.erl b/src/mod_disco.erl
index d6dbd7101..a04369de4 100644
--- a/src/mod_disco.erl
+++ b/src/mod_disco.erl
@@ -51,19 +51,16 @@
-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")}].
diff --git a/src/mod_irc.erl b/src/mod_irc.erl
index 27d5c0f3b..254f05b58 100644
--- a/src/mod_irc.erl
+++ b/src/mod_irc.erl
@@ -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, []},
diff --git a/src/mod_last.erl b/src/mod_last.erl
index d69a5acac..e6232e67c 100644
--- a/src/mod_last.erl
+++ b/src/mod_last.erl
@@ -59,14 +59,13 @@
-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)},
diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index 97033bafb..bc80d47ed 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -75,11 +75,10 @@
%%% 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)},
diff --git a/src/mod_mix.erl b/src/mod_mix.erl
index fc51a5a02..51464e63f 100644
--- a/src/mod_mix.erl
+++ b/src/mod_mix.erl
@@ -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, []}].
diff --git a/src/mod_muc.erl b/src/mod_muc.erl
index 0cf03fa81..acfbb90a0 100644
--- a/src/mod_muc.erl
+++ b/src/mod_muc.erl
@@ -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, []},
diff --git a/src/mod_offline.erl b/src/mod_offline.erl
index 6b32fc98c..83d092ba1 100644
--- a/src/mod_offline.erl
+++ b/src/mod_offline.erl
@@ -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}].
diff --git a/src/mod_ping.erl b/src/mod_ping.erl
index ec2c465e5..9939fb89c 100644
--- a/src/mod_ping.erl
+++ b/src/mod_ping.erl
@@ -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}].
diff --git a/src/mod_privacy.erl b/src/mod_privacy.erl
index 5dcd69720..cae9d8f9f 100644
--- a/src/mod_privacy.erl
+++ b/src/mod_privacy.erl
@@ -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)},
diff --git a/src/mod_private.erl b/src/mod_private.erl
index f5000ed9c..9c3626529 100644
--- a/src/mod_private.erl
+++ b/src/mod_private.erl
@@ -55,14 +55,13 @@
-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)},
diff --git a/src/mod_proxy65.erl b/src/mod_proxy65.erl
index eb6950c60..5a348a819 100644
--- a/src/mod_proxy65.erl
+++ b/src/mod_proxy65.erl
@@ -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, []},
diff --git a/src/mod_proxy65_service.erl b/src/mod_proxy65_service.erl
index f81874694..daa93eaa6 100644
--- a/src/mod_proxy65_service.erl
+++ b/src/mod_proxy65_service.erl
@@ -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),
diff --git a/src/mod_pubsub.erl b/src/mod_pubsub.erl
index 80c93b4a7..cd9aedef2 100644
--- a/src/mod_pubsub.erl
+++ b/src/mod_pubsub.erl
@@ -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},
diff --git a/src/mod_push.erl b/src/mod_push.erl
index 4b917e382..21bc1375c 100644
--- a/src/mod_push.erl
+++ b/src/mod_push.erl
@@ -92,11 +92,10 @@
%%--------------------------------------------------------------------
-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) ->
diff --git a/src/mod_register.erl b/src/mod_register.erl
index b9dabe16d..38df8e225 100644
--- a/src/mod_register.erl
+++ b/src/mod_register.erl
@@ -43,12 +43,11 @@
-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, <<"">>},
diff --git a/src/mod_roster.erl b/src/mod_roster.erl
index ed2a58887..3b893d21d 100644
--- a/src/mod_roster.erl
+++ b/src/mod_roster.erl
@@ -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)},
diff --git a/src/mod_sic.erl b/src/mod_sic.erl
index 6a417b9b0..ef043c642 100644
--- a/src/mod_sic.erl
+++ b/src/mod_sic.erl
@@ -32,22 +32,21 @@
-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) ->
+ [].
diff --git a/src/mod_stats.erl b/src/mod_stats.erl
index af7ad7195..197335259 100644
--- a/src/mod_stats.erl
+++ b/src/mod_stats.erl
@@ -31,17 +31,16 @@
-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) ->
+ [].
diff --git a/src/mod_time.erl b/src/mod_time.erl
index d4dffbf10..3ecd0ae47 100644
--- a/src/mod_time.erl
+++ b/src/mod_time.erl
@@ -33,30 +33,23 @@
-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) ->
+ [].
diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl
index fbbf59b84..41ef92989 100644
--- a/src/mod_vcard.erl
+++ b/src/mod_vcard.erl
@@ -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)},
diff --git a/src/mod_version.erl b/src/mod_version.erl
index 12051332b..5d261dff7 100644
--- a/src/mod_version.erl
+++ b/src/mod_version.erl
@@ -39,24 +39,16 @@
-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}].
diff --git a/test/mod_legacy.erl b/test/mod_legacy.erl
index 00fd44040..96c1e041f 100644
--- a/test/mod_legacy.erl
+++ b/test/mod_legacy.erl
@@ -31,10 +31,9 @@
%%%===================================================================
%%% 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
%%%===================================================================
diff --git a/test/mod_roster_mock.exs b/test/mod_roster_mock.exs
index bdbde2aad..83182c196 100644
--- a/test/mod_roster_mock.exs
+++ b/test/mod_roster_mock.exs
@@ -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)
diff --git a/tools/hook_deps.sh b/tools/hook_deps.sh
index a3a685a2f..633bb3b47 100755
--- a/tools/hook_deps.sh
+++ b/tools/hook_deps.sh
@@ -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),