aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-05-04 12:24:47 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-05-04 12:24:47 +0300
commitcf53d834e9931151a46fed31e644d7eb05e816be (patch)
tree0c559620641e6225adb3c2e5c3848b85a72250bc
parentValidate module options on start_module/2 (diff)
Introduce 'iqdisc' global option
-rw-r--r--src/gen_iq_handler.erl10
-rw-r--r--src/mod_adhoc.erl4
-rw-r--r--src/mod_blocking.erl4
-rw-r--r--src/mod_carboncopy.erl4
-rw-r--r--src/mod_delegation.erl2
-rw-r--r--src/mod_disco.erl4
-rw-r--r--src/mod_irc.erl6
-rw-r--r--src/mod_last.erl4
-rw-r--r--src/mod_mam.erl4
-rw-r--r--src/mod_mix.erl2
-rw-r--r--src/mod_muc.erl6
-rw-r--r--src/mod_offline.erl4
-rw-r--r--src/mod_ping.erl4
-rw-r--r--src/mod_privacy.erl4
-rw-r--r--src/mod_private.erl4
-rw-r--r--src/mod_proxy65_service.erl6
-rw-r--r--src/mod_pubsub.erl2
-rw-r--r--src/mod_register.erl4
-rw-r--r--src/mod_roster.erl4
-rw-r--r--src/mod_sic.erl4
-rw-r--r--src/mod_stats.erl2
-rw-r--r--src/mod_time.erl4
-rw-r--r--src/mod_vcard.erl2
-rw-r--r--src/mod_version.erl4
24 files changed, 53 insertions, 45 deletions
diff --git a/src/gen_iq_handler.erl b/src/gen_iq_handler.erl
index ebf056ebb..aaa7861dc 100644
--- a/src/gen_iq_handler.erl
+++ b/src/gen_iq_handler.erl
@@ -31,11 +31,13 @@
-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,
- process_iq/4, check_type/1, transform_module_options/1]).
+ 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,
@@ -183,6 +185,9 @@ 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}, one_queue).
+
-spec transform_module_options([{atom(), any()}]) -> [{atom(), any()}].
transform_module_options(Opts) ->
@@ -193,6 +198,9 @@ transform_module_options(Opts) ->
Opt
end, Opts).
+opt_type(iqdisc) -> fun check_type/1;
+opt_type(_) -> [iqdisc].
+
%%====================================================================
%% gen_server callbacks
%%====================================================================
diff --git a/src/mod_adhoc.erl b/src/mod_adhoc.erl
index 46fed2867..e6df39044 100644
--- a/src/mod_adhoc.erl
+++ b/src/mod_adhoc.erl
@@ -42,7 +42,7 @@
-include("xmpp.hrl").
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_COMMANDS, ?MODULE, process_local_iq,
IQDisc),
@@ -88,7 +88,7 @@ stop(Host) ->
?NS_COMMANDS).
reload(Host, NewOpts, OldOpts) ->
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_COMMANDS,
?MODULE, process_local_iq, IQDisc),
diff --git a/src/mod_blocking.erl b/src/mod_blocking.erl
index 6da7b4358..6b6f4f19a 100644
--- a/src/mod_blocking.erl
+++ b/src/mod_blocking.erl
@@ -46,7 +46,7 @@
-type block_event() :: {block, [jid()]} | {unblock, [jid()]} | unblock_all.
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
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).
@@ -56,7 +56,7 @@ stop(Host) ->
gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_BLOCKING).
reload(Host, NewOpts, OldOpts) ->
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_BLOCKING,
?MODULE, process_iq, IQDisc);
diff --git a/src/mod_carboncopy.erl b/src/mod_carboncopy.erl
index 0d036c8e9..307d61548 100644
--- a/src/mod_carboncopy.erl
+++ b/src/mod_carboncopy.erl
@@ -61,7 +61,7 @@ is_carbon_copy(_) ->
false.
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
ejabberd_hooks:add(disco_local_features, Host, ?MODULE, disco_features, 50),
Mod = gen_mod:ram_db_mod(Host, ?MODULE),
init_cache(Mod, Host, Opts),
@@ -95,7 +95,7 @@ reload(Host, NewOpts, OldOpts) ->
false ->
ok
end,
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_CARBONS_2,
?MODULE, iq_handler, IQDisc);
diff --git a/src/mod_delegation.erl b/src/mod_delegation.erl
index f41c7610c..865f8ebf4 100644
--- a/src/mod_delegation.erl
+++ b/src/mod_delegation.erl
@@ -170,7 +170,7 @@ handle_cast({disco_info, Type, Host, NS, Info}, State) ->
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, one_queue),
+ ?MODULE, Type, gen_iq_handler:iqdisc(Host)),
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 6b8263371..7fde1b410 100644
--- a/src/mod_disco.erl
+++ b/src/mod_disco.erl
@@ -50,7 +50,7 @@
-type items_acc() :: {error, stanza_error()} | {result, [disco_item()]} | empty.
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_DISCO_ITEMS, ?MODULE,
process_local_iq_items, IQDisc),
@@ -128,7 +128,7 @@ reload(Host, NewOpts, OldOpts) ->
true ->
ok
end,
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_DISCO_ITEMS, ?MODULE,
diff --git a/src/mod_irc.erl b/src/mod_irc.erl
index a2fa4fcd5..fc85668e8 100644
--- a/src/mod_irc.erl
+++ b/src/mod_irc.erl
@@ -107,7 +107,7 @@ init([Host, Opts]) ->
catch ets:new(irc_connection,
[named_table, public,
{keypos, #irc_connection.jid_server_host}]),
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
register_hooks(MyHost, IQDisc),
ejabberd_router:register_route(MyHost, Host),
{ok,
@@ -135,8 +135,8 @@ handle_call(stop, _From, State) ->
handle_cast({reload, ServerHost, NewOpts, OldOpts}, State) ->
NewHost = gen_mod:get_opt_host(ServerHost, NewOpts, <<"irc.@HOST@">>),
OldHost = gen_mod:get_opt_host(ServerHost, OldOpts, <<"irc.@HOST@">>),
- NewIQDisc = gen_mod:get_opt(iqdisc, NewOpts, one_queue),
- OldIQDisc = gen_mod:get_opt(iqdisc, OldOpts, one_queue),
+ NewIQDisc = gen_mod:get_opt(iqdisc, NewOpts, gen_iq_handler:iqdisc(ServerHost)),
+ OldIQDisc = gen_mod:get_opt(iqdisc, OldOpts, gen_iq_handler:iqdisc(ServerHost)),
NewMod = gen_mod:db_mod(ServerHost, NewOpts, ?MODULE),
OldMod = gen_mod:db_mod(ServerHost, OldOpts, ?MODULE),
Access = gen_mod:get_opt(access, NewOpts, all),
diff --git a/src/mod_last.erl b/src/mod_last.erl
index a2a92cbf7..052c17c02 100644
--- a/src/mod_last.erl
+++ b/src/mod_last.erl
@@ -53,7 +53,7 @@
-callback remove_user(binary(), binary()) -> any().
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
Mod:init(Host, Opts),
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
@@ -91,7 +91,7 @@ reload(Host, NewOpts, OldOpts) ->
true ->
ok
end,
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_LAST,
?MODULE, process_local_iq, IQDisc),
diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index 4b94163c0..947fb5fbe 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -72,7 +72,7 @@
%%% API
%%%===================================================================
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
Mod:init(Host, Opts),
init_cache(Host, Opts),
@@ -181,7 +181,7 @@ reload(Host, NewOpts, OldOpts) ->
ok
end,
ets_cache:setopts(archive_prefs_cache, NewOpts),
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
register_iq_handlers(Host, IQDisc);
true ->
diff --git a/src/mod_mix.erl b/src/mod_mix.erl
index 380ef4997..4763447f3 100644
--- a/src/mod_mix.erl
+++ b/src/mod_mix.erl
@@ -125,7 +125,7 @@ process_iq(#iq{lang = Lang} = IQ) ->
init([ServerHost, Opts]) ->
process_flag(trap_exit, true),
Host = gen_mod:get_opt_host(ServerHost, Opts, <<"mix.@HOST@">>),
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
ConfigTab = gen_mod:get_module_proc(Host, config),
ets:new(ConfigTab, [named_table]),
ets:insert(ConfigTab, {plugins, [<<"mix">>]}),
diff --git a/src/mod_muc.erl b/src/mod_muc.erl
index b37f1c94d..56616b927 100644
--- a/src/mod_muc.erl
+++ b/src/mod_muc.erl
@@ -224,7 +224,7 @@ get_online_rooms_by_user(ServerHost, LUser, LServer) ->
init([Host, Opts]) ->
process_flag(trap_exit, true),
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
#state{access = Access, host = MyHost,
history_size = HistorySize, queue_type = QueueType,
room_shaper = RoomShaper} = State = init_state(Host, Opts),
@@ -259,8 +259,8 @@ handle_call({create, Room, From, Nick, Opts}, _From,
{reply, ok, State}.
handle_cast({reload, ServerHost, NewOpts, OldOpts}, #state{host = OldHost}) ->
- NewIQDisc = gen_mod:get_opt(iqdisc, NewOpts, one_queue),
- OldIQDisc = gen_mod:get_opt(iqdisc, OldOpts, one_queue),
+ NewIQDisc = gen_mod:get_opt(iqdisc, NewOpts, gen_iq_handler:iqdisc(ServerHost)),
+ OldIQDisc = gen_mod:get_opt(iqdisc, OldOpts, gen_iq_handler:iqdisc(ServerHost)),
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),
diff --git a/src/mod_offline.erl b/src/mod_offline.erl
index f92090717..c06bb8976 100644
--- a/src/mod_offline.erl
+++ b/src/mod_offline.erl
@@ -129,7 +129,7 @@ init([Host, Opts]) ->
process_flag(trap_exit, true),
Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
Mod:init(Host, Opts),
- IQDisc = gen_mod:get_opt(iqdisc, Opts, no_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
ejabberd_hooks:add(offline_message_hook, Host, ?MODULE,
store_packet, 50),
ejabberd_hooks:add(c2s_self_presence, Host, ?MODULE, c2s_self_presence, 50),
@@ -173,7 +173,7 @@ handle_cast({reload, NewOpts, OldOpts}, #state{host = Host} = State) ->
true ->
ok
end,
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_FLEX_OFFLINE,
?MODULE, handle_offline_query, IQDisc);
diff --git a/src/mod_ping.erl b/src/mod_ping.erl
index 038b1bc2d..1c9639bf7 100644
--- a/src/mod_ping.erl
+++ b/src/mod_ping.erl
@@ -95,7 +95,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, no_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
register_iq_handlers(Host, IQDisc),
case State#state.send_pings of
true -> register_hooks(Host);
@@ -114,7 +114,7 @@ handle_call(_Req, _From, State) ->
handle_cast({reload, Host, NewOpts, OldOpts},
#state{timers = Timers} = OldState) ->
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} -> register_iq_handlers(Host, IQDisc);
true -> ok
end,
diff --git a/src/mod_privacy.erl b/src/mod_privacy.erl
index 22cfd8243..32a103e40 100644
--- a/src/mod_privacy.erl
+++ b/src/mod_privacy.erl
@@ -60,7 +60,7 @@
-callback remove_user(binary(), binary()) -> any().
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
Mod:init(Host, Opts),
ejabberd_hooks:add(disco_local_features, Host, ?MODULE,
@@ -106,7 +106,7 @@ reload(Host, NewOpts, OldOpts) ->
true ->
ok
end,
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_PRIVACY,
?MODULE, process_iq, IQDisc);
diff --git a/src/mod_private.erl b/src/mod_private.erl
index 16ca31491..8f9059d90 100644
--- a/src/mod_private.erl
+++ b/src/mod_private.erl
@@ -49,7 +49,7 @@
-callback remove_user(binary(), binary()) -> any().
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
Mod:init(Host, Opts),
ejabberd_hooks:add(remove_user, Host, ?MODULE,
@@ -71,7 +71,7 @@ reload(Host, NewOpts, OldOpts) ->
true ->
ok
end,
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_PRIVATE,
?MODULE, process_sm_iq, IQDisc);
diff --git a/src/mod_proxy65_service.erl b/src/mod_proxy65_service.erl
index 6a0b1fc16..b27f3bc20 100644
--- a/src/mod_proxy65_service.erl
+++ b/src/mod_proxy65_service.erl
@@ -60,7 +60,7 @@ reload(Host, NewOpts, OldOpts) ->
init([Host, Opts]) ->
process_flag(trap_exit, true),
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
MyHost = gen_mod:get_opt_host(Host, Opts, <<"proxy.@HOST@">>),
gen_iq_handler:add_iq_handler(ejabberd_local, MyHost, ?NS_DISCO_INFO,
?MODULE, process_disco_info, IQDisc),
@@ -91,8 +91,8 @@ handle_call(_Request, _From, State) ->
handle_cast({reload, ServerHost, NewOpts, OldOpts}, State) ->
NewHost = gen_mod:get_opt_host(ServerHost, NewOpts, <<"proxy.@HOST@">>),
OldHost = gen_mod:get_opt_host(ServerHost, OldOpts, <<"proxy.@HOST@">>),
- NewIQDisc = gen_mod:get_opt(iqdisc, NewOpts, one_queue),
- OldIQDisc = gen_mod:get_opt(iqdisc, OldOpts, one_queue),
+ NewIQDisc = gen_mod:get_opt(iqdisc, NewOpts, gen_iq_handler:iqdisc(ServerHost)),
+ OldIQDisc = gen_mod:get_opt(iqdisc, OldOpts, gen_iq_handler:iqdisc(ServerHost)),
if (NewIQDisc /= OldIQDisc) or (NewHost /= OldHost) ->
gen_iq_handler:add_iq_handler(ejabberd_local, NewHost, ?NS_DISCO_INFO,
?MODULE, process_disco_info, NewIQDisc),
diff --git a/src/mod_pubsub.erl b/src/mod_pubsub.erl
index d5a4fd9c4..2a9fa18c7 100644
--- a/src/mod_pubsub.erl
+++ b/src/mod_pubsub.erl
@@ -246,7 +246,7 @@ init([ServerHost, Opts]) ->
ejabberd_router:register_route(Host, ServerHost),
Access = gen_mod:get_opt(access_createnode, Opts, all),
PepOffline = gen_mod:get_opt(ignore_pep_from_offline, Opts, true),
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
LastItemCache = gen_mod:get_opt(last_item_cache, Opts, false),
MaxItemsNode = gen_mod:get_opt(max_items_node, Opts, ?MAXITEMS),
MaxSubsNode = gen_mod:get_opt(max_subscriptions_node, Opts),
diff --git a/src/mod_register.erl b/src/mod_register.erl
index 2d6442ba7..1c4de1301 100644
--- a/src/mod_register.erl
+++ b/src/mod_register.erl
@@ -44,7 +44,7 @@
-include("xmpp.hrl").
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_REGISTER, ?MODULE, process_iq, IQDisc),
gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
@@ -69,7 +69,7 @@ stop(Host) ->
?NS_REGISTER).
reload(Host, NewOpts, OldOpts) ->
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_REGISTER,
?MODULE, process_iq, IQDisc),
diff --git a/src/mod_roster.erl b/src/mod_roster.erl
index 819e6a895..f2bfc59de 100644
--- a/src/mod_roster.erl
+++ b/src/mod_roster.erl
@@ -84,7 +84,7 @@
{subscription(), [binary()]}.
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
Mod:init(Host, Opts),
ejabberd_hooks:add(roster_get, Host, ?MODULE,
@@ -146,7 +146,7 @@ reload(Host, NewOpts, OldOpts) ->
true ->
ok
end,
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_ROSTER,
?MODULE, process_iq, IQDisc);
diff --git a/src/mod_sic.erl b/src/mod_sic.erl
index 73d4f9de2..a2b3256eb 100644
--- a/src/mod_sic.erl
+++ b/src/mod_sic.erl
@@ -39,7 +39,7 @@
-include("xmpp.hrl").
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
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,
@@ -56,7 +56,7 @@ stop(Host) ->
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, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_SIC_0,
?MODULE, process_local_iq, IQDisc),
diff --git a/src/mod_stats.erl b/src/mod_stats.erl
index 88ff7d0cb..92a6627c5 100644
--- a/src/mod_stats.erl
+++ b/src/mod_stats.erl
@@ -38,7 +38,7 @@
-include("xmpp.hrl").
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_STATS,
?MODULE, process_iq, IQDisc).
diff --git a/src/mod_time.erl b/src/mod_time.erl
index ba167ad80..c54f3d271 100644
--- a/src/mod_time.erl
+++ b/src/mod_time.erl
@@ -41,7 +41,7 @@
-include("xmpp.hrl").
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_TIME, ?MODULE, process_local_iq, IQDisc).
@@ -50,7 +50,7 @@ stop(Host) ->
?NS_TIME).
reload(Host, NewOpts, OldOpts) ->
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_TIME,
?MODULE, process_local_iq, IQDisc);
diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl
index 90f270b54..00fd4bbc0 100644
--- a/src/mod_vcard.erl
+++ b/src/mod_vcard.erl
@@ -82,7 +82,7 @@ init([Host, Opts]) ->
Mod:init(Host, Opts),
ejabberd_hooks:add(remove_user, Host, ?MODULE,
remove_user, 50),
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_VCARD, ?MODULE, process_local_iq, IQDisc),
gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
diff --git a/src/mod_version.erl b/src/mod_version.erl
index 2f43cd891..5f613e02a 100644
--- a/src/mod_version.erl
+++ b/src/mod_version.erl
@@ -40,7 +40,7 @@
-include("xmpp.hrl").
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)),
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_VERSION, ?MODULE, process_local_iq,
IQDisc).
@@ -50,7 +50,7 @@ stop(Host) ->
?NS_VERSION).
reload(Host, NewOpts, OldOpts) ->
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, gen_iq_handler:iqdisc(Host)) of
{false, IQDisc, _} ->
gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_VERSION,
?MODULE, process_local_iq, IQDisc);