Fix channel crash before CONNECT
This commit is contained in:
parent
db1cf4469b
commit
1decab9369
|
@ -831,6 +831,8 @@ will_delay_interval(WillMsg) ->
|
||||||
%% Terminate
|
%% Terminate
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
|
terminate(_, #channel{connected = undefined}) ->
|
||||||
|
ok;
|
||||||
terminate(normal, #channel{conninfo = ConnInfo, client = ClientInfo}) ->
|
terminate(normal, #channel{conninfo = ConnInfo, client = ClientInfo}) ->
|
||||||
ok = emqx_hooks:run('client.disconnected', [ClientInfo, normal, ConnInfo]);
|
ok = emqx_hooks:run('client.disconnected', [ClientInfo, normal, ConnInfo]);
|
||||||
terminate({shutdown, Reason}, #channel{conninfo = ConnInfo, client = ClientInfo})
|
terminate({shutdown, Reason}, #channel{conninfo = ConnInfo, client = ClientInfo})
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
-module(emqx_misc).
|
-module(emqx_misc).
|
||||||
|
|
||||||
-include("types.hrl").
|
-include("types.hrl").
|
||||||
|
-include("logger.hrl").
|
||||||
|
|
||||||
-export([ merge_opts/2
|
-export([ merge_opts/2
|
||||||
, maybe_apply/2
|
, maybe_apply/2
|
||||||
|
@ -70,7 +71,7 @@ pipeline([], Input, State) ->
|
||||||
{ok, Input, State};
|
{ok, Input, State};
|
||||||
|
|
||||||
pipeline([Fun|More], 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 -> pipeline(More, Input, State);
|
||||||
{ok, NState} ->
|
{ok, NState} ->
|
||||||
pipeline(More, Input, NState);
|
pipeline(More, Input, NState);
|
||||||
|
@ -80,6 +81,11 @@ pipeline([Fun|More], Input, State) ->
|
||||||
{error, Reason, State};
|
{error, Reason, State};
|
||||||
{error, Reason, NState} ->
|
{error, Reason, NState} ->
|
||||||
{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.
|
end.
|
||||||
|
|
||||||
-compile({inline, [apply_fun/3]}).
|
-compile({inline, [apply_fun/3]}).
|
||||||
|
|
Loading…
Reference in New Issue