From 2168489ddf96a88d4b4885a1a0a986acb25754c5 Mon Sep 17 00:00:00 2001 From: Evgeny Khramtsov Date: Sun, 4 Aug 2019 21:46:18 +0300 Subject: Don't retain module option on gen_mod supervisor When module's options were updated (e.g. by reloading ejabberd.yml) and, later, the module's process crashed, gen_mod supervisor restarts the process with outdated options. This is now fixed. --- src/mod_muc.erl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/mod_muc.erl') diff --git a/src/mod_muc.erl b/src/mod_muc.erl index d50e6552e..36cebb664 100644 --- a/src/mod_muc.erl +++ b/src/mod_muc.erl @@ -34,7 +34,7 @@ %% API -export([start/2, stop/1, - start_link/3, + start_link/2, reload/3, room_destroyed/4, store_room/4, @@ -114,7 +114,7 @@ %% API %%==================================================================== start(Host, Opts) -> - case mod_muc_sup:start(Host, Opts) of + case mod_muc_sup:start(Host) of {ok, _} -> MyHosts = gen_mod:get_opt_hosts(Opts), Mod = gen_mod:db_mod(Opts, ?MODULE), @@ -171,9 +171,9 @@ reload(ServerHost, NewOpts, OldOpts) -> depends(_Host, _Opts) -> [{mod_mam, soft}]. -start_link(Host, Opts, I) -> +start_link(Host, I) -> Proc = procname(Host, I), - ?GEN_SERVER:start_link({local, Proc}, ?MODULE, [Host, Opts, I], + ?GEN_SERVER:start_link({local, Proc}, ?MODULE, [Host, I], ejabberd_config:fsm_limit_opts([])). -spec procname(binary(), pos_integer() | {binary(), binary()}) -> atom(). @@ -365,8 +365,9 @@ get_online_rooms_by_user(ServerHost, LUser, LServer) -> %% gen_server callbacks %%==================================================================== -spec init(list()) -> {ok, state()}. -init([Host, Opts, Worker]) -> +init([Host, Worker]) -> process_flag(trap_exit, true), + Opts = gen_mod:get_module_opts(Host, ?MODULE), MyHosts = gen_mod:get_opt_hosts(Opts), register_routes(Host, MyHosts, Worker), register_iq_handlers(MyHosts, Worker), -- cgit v1.2.3