]> granicus.if.org Git - ejabberd/commitdiff
mod_http_fileserver: Unregister 'reopen_log_hook'
authorHolger Weiss <holger@zedat.fu-berlin.de>
Sun, 14 Jul 2019 13:16:13 +0000 (15:16 +0200)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Sun, 14 Jul 2019 13:16:13 +0000 (15:16 +0200)
Unregister the global 'reopen_log_hook' on termination if the module isn't
loaded for another host.

src/mod_http_fileserver.erl

index ea52eda6b30a6174e234129115b4d490d5e0964d..ac94b58d6162e437857cce48aeb57fe44a64b86e 100644 (file)
@@ -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}