|
|
@@ -558,19 +558,20 @@ handle_out(connack, {?RC_SUCCESS, SP, ConnPkt}, Channel = #channel{conninfo = Co
|
|
|
fun enrich_server_keepalive/2,
|
|
|
fun enrich_assigned_clientid/2
|
|
|
], #{}, Channel),
|
|
|
- AckPacket = run_hooks('client.connack', [ConnInfo],
|
|
|
- ?CONNACK_PACKET(?RC_SUCCESS, SP, AckProps)),
|
|
|
- return_connack(AckPacket,
|
|
|
- ensure_keepalive(AckProps,
|
|
|
+ NAckProps = run_hooks('client.connack', [ConnInfo, emqx_reason_codes:name(?RC_SUCCESS)], AckProps),
|
|
|
+
|
|
|
+ return_connack(?CONNACK_PACKET(?RC_SUCCESS, SP, NAckProps),
|
|
|
+ ensure_keepalive(NAckProps,
|
|
|
ensure_connected(ConnPkt, Channel)));
|
|
|
|
|
|
handle_out(connack, {ReasonCode, _ConnPkt}, Channel = #channel{conninfo = ConnInfo}) ->
|
|
|
+ Reason = emqx_reason_codes:name(ReasonCode),
|
|
|
+ AckProps = run_hooks('client.connack', [ConnInfo, Reason], emqx_mqtt_props:new()),
|
|
|
AckPacket = ?CONNACK_PACKET(case maps:get(proto_ver, ConnInfo) of
|
|
|
?MQTT_PROTO_V5 -> ReasonCode;
|
|
|
_ -> emqx_reason_codes:compat(connack, ReasonCode)
|
|
|
- end),
|
|
|
- AckPacket1 = run_hooks('client.connack', [ConnInfo], AckPacket),
|
|
|
- shutdown(emqx_reason_codes:name(ReasonCode), AckPacket1, Channel);
|
|
|
+ end, sp(false), AckProps),
|
|
|
+ shutdown(Reason, AckPacket, Channel);
|
|
|
|
|
|
%% Optimize?
|
|
|
handle_out(publish, [], Channel) ->
|
|
|
@@ -944,9 +945,10 @@ receive_maximum(#{zone := Zone}, ConnProps) ->
|
|
|
%% Run Connect Hooks
|
|
|
|
|
|
run_conn_hooks(ConnPkt, Channel = #channel{conninfo = ConnInfo}) ->
|
|
|
- case run_hooks('client.connect', [ConnInfo], ConnPkt) of
|
|
|
+ ConnProps = emqx_packet:info(properties, ConnPkt),
|
|
|
+ case run_hooks('client.connect', [ConnInfo], ConnProps) of
|
|
|
Error = {error, _Reason} -> Error;
|
|
|
- NConnPkt -> {ok, NConnPkt, Channel}
|
|
|
+ NConnProps -> {ok, emqx_packet:set_props(NConnProps, ConnPkt), Channel}
|
|
|
end.
|
|
|
|
|
|
%%--------------------------------------------------------------------
|