1
0
Fork 0
mirror of https://github.com/processone/ejabberd synced 2025-10-03 09:49:18 +02:00

Fix problem calling get_log_path when ejabberd is stopping

When ejabberd is being stopped
and some module calls ejabberd_logger:get_log_path(),
application:load/1 crashes with error:

** Reason for termination ==
** {terminating,
       [{application_controller,call,2,
            [{file,"application_controller.erl"},{line,511}]},
        {application,load1,2,[{file,"application.erl"},{line,274}]},
        {ejabberd_config,env_binary_to_list,2,
            [{file,"/home/git/ejabberd/src/ejabberd_config.erl"},
             {line,343}]},
        {ejabberd_logger,get_log_path,0,
            [{file,"/home/git/ejabberd/src/ejabberd_logger.erl"},
             {line,55}]},
This commit is contained in:
Badlop 2025-06-27 16:38:46 +02:00
parent 3d89c9199c
commit 263e1f59f7

View file

@ -340,7 +340,12 @@ may_hide_data(Data) ->
-spec env_binary_to_list(atom(), atom()) -> {ok, any()} | undefined. -spec env_binary_to_list(atom(), atom()) -> {ok, any()} | undefined.
env_binary_to_list(Application, Parameter) -> env_binary_to_list(Application, Parameter) ->
%% Application need to be loaded to allow setting parameters %% Application need to be loaded to allow setting parameters
application:load(Application), case proplists:is_defined(Application, application:loaded_applications()) of
true ->
ok;
false ->
application:load(Application)
end,
case application:get_env(Application, Parameter) of case application:get_env(Application, Parameter) of
{ok, Val} when is_binary(Val) -> {ok, Val} when is_binary(Val) ->
BVal = binary_to_list(Val), BVal = binary_to_list(Val),