From 7bfc673c28abc56f18839ce6861925cf43c0d706 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Sun, 14 Jun 2015 23:51:07 +0800 Subject: [PATCH] publish willmsg when normal exit --- apps/emqttd/src/emqttd_protocol.erl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/emqttd/src/emqttd_protocol.erl b/apps/emqttd/src/emqttd_protocol.erl index d519a182e..2c07abbee 100644 --- a/apps/emqttd/src/emqttd_protocol.erl +++ b/apps/emqttd/src/emqttd_protocol.erl @@ -302,10 +302,16 @@ shutdown(duplicate_id, _State) -> shutdown(_, #proto_state{clientid = undefined}) -> ignore; -shutdown(normal, #proto_state{peername = Peername, clientid = ClientId}) -> +shutdown(normal, #proto_state{peername = Peername, clientid = ClientId, will_msg = WillMsg}) -> lager:info([{client, ClientId}], "Client ~s@~s: normal shutdown", [ClientId, emqttd_net:format(Peername)]), try_unregister(ClientId), + if + WillMsg =/= undefined -> + send_willmsg(ClientId, WillMsg); + true -> + ok + end, emqttd_broker:foreach_hooks(client_disconnected, [normal, ClientId]); shutdown(Error, #proto_state{peername = Peername, clientid = ClientId, will_msg = WillMsg}) -> @@ -331,6 +337,7 @@ send_willmsg(_ClientId, undefined) -> ignore; %%TODO:should call session... send_willmsg(ClientId, WillMsg) -> + lager:info("Client ~s send willmsg: ~p", [ClientId, WillMsg]), emqttd_pubsub:publish(ClientId, WillMsg). start_keepalive(0) -> ignore;