Просмотр исходного кода

Merge pull request #7764 from HJianBo/fix-authn-proc-crash

fix(authn): avoid crashing emqx_authentication process due to un-safe call
JianBo He 3 лет назад
Родитель
Сommit
81e9000c72
1 измененных файлов с 7 добавлено и 1 удалено
  1. 7 1
      apps/emqx/src/emqx_authentication.erl

+ 7 - 1
apps/emqx/src/emqx_authentication.erl

@@ -417,6 +417,7 @@ list_users(ChainName, AuthenticatorID, FuzzyParams) ->
 %%--------------------------------------------------------------------
 
 init(_Opts) ->
+    process_flag(trap_exit, true),
     ok = emqx_config_handler:add_handler([?CONF_ROOT], ?MODULE),
     ok = emqx_config_handler:add_handler([listeners, '?', '?', ?CONF_ROOT], ?MODULE),
     {ok, #{hooked => false, providers => #{}}}.
@@ -784,7 +785,12 @@ update_chain(ChainName, UpdateFun) ->
         [] ->
             {error, {not_found, {chain, ChainName}}};
         [Chain] ->
-            UpdateFun(Chain)
+            try
+                UpdateFun(Chain)
+            catch
+                Class:Reason:Stk ->
+                    {error, {exception, {Class, Reason, Stk}}}
+            end
     end.
 
 call_authenticator(ChainName, AuthenticatorID, Func, Args) ->