From f5adafe9e2852a9a2299717004b2bf6615cb89ae Mon Sep 17 00:00:00 2001 From: Feng Date: Fri, 29 Apr 2016 00:17:07 +0800 Subject: [PATCH] fix issue #535 --- src/emqttd_client.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/emqttd_client.erl b/src/emqttd_client.erl index 3687eaa7f..f3169339a 100644 --- a/src/emqttd_client.erl +++ b/src/emqttd_client.erl @@ -79,11 +79,12 @@ init([OriginConn, MqttEnv]) -> exit({shutdown, Reason}) end, ConnName = esockd_net:format(PeerName), + Self = self(), SendFun = fun(Data) -> try Connection:async_send(Data) of true -> ok catch - error:Error -> exit({shutdown, Error}) + error:Error -> Self ! {shutdown, Error} end end, PktOpts = proplists:get_value(packet, MqttEnv), @@ -138,6 +139,10 @@ handle_cast(Msg, State) -> handle_info(timeout, State) -> shutdown(idle_timeout, State); +%% fix issue #535 +handle_info({shutdown, Error}, State) -> + shutdown(Error, State); + %% Asynchronous SUBACK handle_info({suback, PacketId, GrantedQos}, State) -> with_proto_state(fun(ProtoState) ->