diff --git a/src/emqx_channel.erl b/src/emqx_channel.erl index 267101a9c..321d05bd4 100644 --- a/src/emqx_channel.erl +++ b/src/emqx_channel.erl @@ -1545,8 +1545,11 @@ init_alias_maximum(_ConnPkt, _ClientInfo) -> undefined. %%-------------------------------------------------------------------- %% Enrich Keepalive -ensure_keepalive(#{'Server-Keep-Alive' := Interval}, Channel) -> - ensure_keepalive_timer(Interval, Channel); +%% MQTT 5 +ensure_keepalive(#{'Server-Keep-Alive' := Interval}, Channel = #channel{conninfo = ConnInfo}) -> + ensure_keepalive_timer(Interval, Channel#channel{conninfo = ConnInfo#{keepalive => Interval}}); + +%% MQTT 3,4 ensure_keepalive(_AckProps, Channel = #channel{conninfo = ConnInfo}) -> ensure_keepalive_timer(maps:get(keepalive, ConnInfo), Channel).