]> granicus.if.org Git - ejabberd/commitdiff
Introduce 'iqdisc' global option
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Thu, 4 May 2017 09:24:47 +0000 (12:24 +0300)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Thu, 4 May 2017 09:24:47 +0000 (12:24 +0300)
24 files changed:
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_service.erl
src/mod_pubsub.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

index ebf056ebb054adeafc890f10f0d66582e4eeb441..aaa7861dc5e9feb59e6a28a7268efa899d79d09a 100644 (file)
 -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
 %%====================================================================
index 46fed2867e616da33b7ac0a306c859e14fc07a77..e6df39044e053bcb1a9ed15119496140ae8f2722 100644 (file)
@@ -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),
index 6da7b43588d469206892884403be2e824aeb8626..6b6f4f19a58f79d58529c6f86663be1494523c25 100644 (file)
@@ -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);
index 0d036c8e9b6d2f9c99b2ced26f56fd322fec34e7..307d61548b840613825bb14e9ec5f98992e369d1 100644 (file)
@@ -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);
index f41c7610c0e8961f9ccc5babc8c61138049a0572..865f8ebf4f019e982e4e8cc0808037e5fba2f149 100644 (file)
@@ -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]),
index 6b8263371cb1c885da119c4c4941af09b30f008d..7fde1b410e78b042d1f8ebce7095b325f5fddbb1 100644 (file)
@@ -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,
index a2fa4fcd5e87117f485d6d104ccb8d80c45f0a3f..fc85668e88a2b947fe7948125b0b551893b134b9 100644 (file)
@@ -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),
index a2a92cbf75a221e392d6d8bc3c208d8d74de32e8..052c17c02bd1fcbf030e4d8524d9434de771d495 100644 (file)
@@ -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),
index 4b94163c0876414559c23d8baabfe017a4878b6f..947fb5fbeee0631c0251df44063186c9950f62cb 100644 (file)
@@ -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 ->
index 380ef49970ddd88f0aa0bed90a47b32c77bf0a1f..4763447f3cb19f8f84c3801a8ceb016a4ced4241 100644 (file)
@@ -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">>]}),
index b37f1c94d3537427dffc039c1628aedd8199c9b4..56616b927735d5fa7cf58fc87a06ae75a3e5d626 100644 (file)
@@ -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),
index f92090717504eaaf9a02ece0ed314d447b32c612..c06bb89761a4adae00e0dd6be895ecbd684f83c9 100644 (file)
@@ -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);
index 038b1bc2d151c9c2c4bbc92de8eff77ee32c2b11..1c9639bf792aefcebe874a0a3c74b7584d12bb04 100644 (file)
@@ -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,
index 22cfd8243b46dc3366def5e8adddf7b02ea5201b..32a103e40c709186554318ca11d5db2acb79d859 100644 (file)
@@ -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);
index 16ca31491d8d2fac6fece4f7d6db3b3cce128685..8f9059d90dfd6b872b932d2483e3dec76d70e8ba 100644 (file)
@@ -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);
index 6a0b1fc16fb6ff8c7770600630672df746ca6778..b27f3bc2062ea91f929e595105a69922a56638c2 100644 (file)
@@ -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),
index d5a4fd9c4c09b4448699b40da0cf044f280ab83a..2a9fa18c70711e573dad7e09b16a25b2d2203339 100644 (file)
@@ -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),
index 2d6442ba75b3a58bbf509df62afae50c545a0fc9..1c4de13011fb18ed7cc388e9b92c11af8453ccb0 100644 (file)
@@ -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),
index 819e6a8952279f00e14b8f488cfd19ff0a183768..f2bfc59dec81c6704a58bb03e81db33f23f4de98 100644 (file)
@@ -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);
index 73d4f9de2540499ab48edb9174b37a605a2dbefc..a2b3256ebcbed6138e1ece2d8d57bbed6fed16bb 100644 (file)
@@ -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),
index 88ff7d0cb20ec37c21aa31acf8904fe4ff6da743..92a6627c55ed9f23e81c4e6a406a3cb2a3b9d3c7 100644 (file)
@@ -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).
 
index ba167ad8093d47c694c767709c85a99f8946ef61..c54f3d27189750694ffc879d98ae4e0a7d93aabc 100644 (file)
@@ -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);
index 90f270b54fbcb5ad3dd2f8e7fc7b860e4637fd08..00fd4bbc07602547e9afb186e7d9b2d759bc570e 100644 (file)
@@ -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,
index 2f43cd891ab09f8afe74e4f96c288107f226ebfd..5f613e02abe835937d20055176402554ea41bcb4 100644 (file)
@@ -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);