fix(conninfo): Ensure receive_maximum do not exceed limit

This commit is contained in:
Zaiming Shi 2021-03-24 21:55:20 +01:00 committed by Zaiming (Stone) Shi
parent e862ff6b20
commit b10a60cddb
4 changed files with 11 additions and 5 deletions

View File

@ -182,6 +182,8 @@
-define(MAX_PACKET_SIZE, 16#FFFFFFF). -define(MAX_PACKET_SIZE, 16#FFFFFFF).
-define(MAX_TOPIC_AlIAS, 16#FFFF). -define(MAX_TOPIC_AlIAS, 16#FFFF).
-define(MAX_INFLIGHT_HARD_LIMIT, 32767).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% MQTT Frame Mask %% MQTT Frame Mask
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------

View File

@ -936,8 +936,8 @@ end}.
%% 0 is equivalent to maximum allowed %% 0 is equivalent to maximum allowed
{mapping, "zone.$name.max_inflight", "emqx.zones", [ {mapping, "zone.$name.max_inflight", "emqx.zones", [
{default, 0}, {default, 0},
{datatype, integer} {datatype, integer},
{validators, ["range:1-32767"]}, {validators, ["range:1-32767"]}
]}. ]}.
%% @doc Retry interval for redelivering QoS1/2 messages. %% @doc Retry interval for redelivering QoS1/2 messages.

View File

@ -1142,9 +1142,13 @@ expiry_interval(Zone, #mqtt_packet_connect{clean_start = false}) ->
expiry_interval(_Zone, #mqtt_packet_connect{clean_start = true}) -> expiry_interval(_Zone, #mqtt_packet_connect{clean_start = true}) ->
0. 0.
-compile({inline, [receive_maximum/2]}).
receive_maximum(Zone, ConnProps) -> receive_maximum(Zone, ConnProps) ->
emqx_mqtt_props:get('Receive-Maximum', ConnProps, emqx_zone:max_inflight(Zone)). MaxInflightConfig = case emqx_zone:max_inflight(Zone) of
0 -> ?MAX_INFLIGHT_HARD_LIMIT;
N -> N
end,
MaxByClient = emqx_mqtt_props:get('Receive-Maximum', ConnProps, MaxInflightConfig),
erlang:min(MaxByClient, MaxInflightConfig).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% Run Connect Hooks %% Run Connect Hooks

View File

@ -662,7 +662,7 @@ inc_expired_cnt(message, N) ->
-compile({inline, [next_pkt_id/1]}). -compile({inline, [next_pkt_id/1]}).
next_pkt_id(Session = #session{next_pkt_id = 16#FFFF}) -> next_pkt_id(Session = #session{next_pkt_id = ?MAX_PACKET_ID}) ->
Session#session{next_pkt_id = 1}; Session#session{next_pkt_id = 1};
next_pkt_id(Session = #session{next_pkt_id = Id}) -> next_pkt_id(Session = #session{next_pkt_id = Id}) ->