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.