Fix channel crash before CONNECT

This commit is contained in:
terry-xiaoyu 2019-09-20 21:29:51 +08:00
parent db1cf4469b
commit 1decab9369
2 changed files with 9 additions and 1 deletions

View File

@ -831,6 +831,8 @@ will_delay_interval(WillMsg) ->
%% Terminate
%%--------------------------------------------------------------------
terminate(_, #channel{connected = undefined}) ->
ok;
terminate(normal, #channel{conninfo = ConnInfo, client = ClientInfo}) ->
ok = emqx_hooks:run('client.disconnected', [ClientInfo, normal, ConnInfo]);
terminate({shutdown, Reason}, #channel{conninfo = ConnInfo, client = ClientInfo})

View File

@ -17,6 +17,7 @@
-module(emqx_misc).
-include("types.hrl").
-include("logger.hrl").
-export([ merge_opts/2
, maybe_apply/2
@ -70,7 +71,7 @@ pipeline([], Input, State) ->
{ok, Input, State};
pipeline([Fun|More], Input, State) ->
case apply_fun(Fun, Input, State) of
try apply_fun(Fun, Input, State) of
ok -> pipeline(More, Input, State);
{ok, NState} ->
pipeline(More, Input, NState);
@ -80,6 +81,11 @@ pipeline([Fun|More], Input, State) ->
{error, Reason, State};
{error, Reason, NState} ->
{error, Reason, NState}
catch
Error:Reason:Stacktrace ->
?LOG("pipeline ~p failed: ~p, stacktrace: ~p",
[{Fun, Input, State}, {Error, Reason}, Stacktrace]),
{error, Reason, State}
end.
-compile({inline, [apply_fun/3]}).