From cd36bb6eda74f319b2115fcbbf5551ba7b20fe90 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Sun, 14 Jul 2019 15:16:13 +0200 Subject: [PATCH] mod_http_fileserver: Unregister 'reopen_log_hook' Unregister the global 'reopen_log_hook' on termination if the module isn't loaded for another host. --- src/mod_http_fileserver.erl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/mod_http_fileserver.erl b/src/mod_http_fileserver.erl index ea52eda6b..ac94b58d6 100644 --- a/src/mod_http_fileserver.erl +++ b/src/mod_http_fileserver.erl @@ -243,11 +243,14 @@ handle_info(Info, State) -> %% cleaning up. When it returns, the gen_server terminates with Reason. %% The return value is ignored. %%-------------------------------------------------------------------- -terminate(_Reason, State) -> +terminate(_Reason, #state{host = Host} = State) -> close_log(State#state.accesslogfd), - %% TODO: unregister the hook gracefully - %% ejabberd_hooks:delete(reopen_log_hook, State#state.host, ?MODULE, reopen_log, 50), - ok. + case gen_mod:is_loaded_elsewhere(Host, ?MODULE) of + false -> + ejabberd_hooks:delete(reopen_log_hook, ?MODULE, reopen_log, 50); + true -> + ok + end. %%-------------------------------------------------------------------- %% Func: code_change(OldVsn, State, Extra) -> {ok, NewState}