From b29ceb9f6b1e0461a196b4584b586e8334f0318a Mon Sep 17 00:00:00 2001 From: terry-xiaoyu <506895667@qq.com> Date: Fri, 20 Sep 2019 22:27:02 +0800 Subject: [PATCH 1/3] Fix connack reason code when crash --- src/emqx_channel.erl | 2 +- src/emqx_reason_codes.erl | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/emqx_channel.erl b/src/emqx_channel.erl index d6d1f88d3..89d3a895d 100644 --- a/src/emqx_channel.erl +++ b/src/emqx_channel.erl @@ -239,7 +239,7 @@ handle_in(?CONNECT_PACKET(ConnPkt), Channel) -> {ok, NConnPkt, NChannel} -> process_connect(NConnPkt, NChannel); {error, ReasonCode, NChannel} -> - handle_out({connack, ReasonCode, ConnPkt}, NChannel) + handle_out({connack, emqx_reason_codes:formalized(connack, ReasonCode), ConnPkt}, NChannel) end; handle_in(Packet = ?PUBLISH_PACKET(_QoS), Channel) -> diff --git a/src/emqx_reason_codes.erl b/src/emqx_reason_codes.erl index 6aad26a31..785888017 100644 --- a/src/emqx_reason_codes.erl +++ b/src/emqx_reason_codes.erl @@ -25,6 +25,7 @@ , text/2 , connack_error/1 , mqtt_frame_error/1 + , formalized/2 ]). -export([compat/2]). @@ -178,3 +179,7 @@ connack_error(_) -> ?RC_NOT_AUTHORIZED. mqtt_frame_error(mqtt_frame_too_large) -> ?RC_PACKET_TOO_LARGE; mqtt_frame_error(_) -> ?RC_MALFORMED_PACKET. + +formalized(connack, Code) when is_integer(Code) -> Code; +formalized(connack, Code) when is_integer(Code) -> + ?RC_SERVER_UNAVAILABLE. From 0bd69ba0598cf9e26084fa2a9a773fd3d169d7e9 Mon Sep 17 00:00:00 2001 From: terry-xiaoyu <506895667@qq.com> Date: Fri, 20 Sep 2019 22:30:16 +0800 Subject: [PATCH 2/3] Fix connack reason code when crash --- src/emqx_reason_codes.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emqx_reason_codes.erl b/src/emqx_reason_codes.erl index 785888017..39d7bd232 100644 --- a/src/emqx_reason_codes.erl +++ b/src/emqx_reason_codes.erl @@ -181,5 +181,5 @@ mqtt_frame_error(mqtt_frame_too_large) -> ?RC_PACKET_TOO_LARGE; mqtt_frame_error(_) -> ?RC_MALFORMED_PACKET. formalized(connack, Code) when is_integer(Code) -> Code; -formalized(connack, Code) when is_integer(Code) -> +formalized(connack, _Code) -> ?RC_SERVER_UNAVAILABLE. From 464746e9a59e9052eeba6bb9c4d0eb8b7c86bc91 Mon Sep 17 00:00:00 2001 From: terry-xiaoyu <506895667@qq.com> Date: Fri, 20 Sep 2019 22:42:07 +0800 Subject: [PATCH 3/3] Add peerport --- src/emqx_channel.erl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/emqx_channel.erl b/src/emqx_channel.erl index 89d3a895d..da2582fdc 100644 --- a/src/emqx_channel.erl +++ b/src/emqx_channel.erl @@ -172,7 +172,7 @@ set_field(Name, Val, Channel) -> %%-------------------------------------------------------------------- -spec(init(emqx_types:conninfo(), proplists:proplist()) -> channel()). -init(ConnInfo = #{peername := {PeerHost, _Port}}, Options) -> +init(ConnInfo = #{peername := {PeerHost, PeerPort}}, Options) -> Zone = proplists:get_value(zone, Options), Peercert = maps:get(peercert, ConnInfo, undefined), Username = case peer_cert_as_username(Options) of @@ -184,6 +184,7 @@ init(ConnInfo = #{peername := {PeerHost, _Port}}, Options) -> MountPoint = emqx_zone:get_env(Zone, mountpoint), ClientInfo = #{zone => Zone, peerhost => PeerHost, + peerport => PeerPort, peercert => Peercert, client_id => undefined, username => Username,