Handled client's receive maximum property to avoid publish flooding #858
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Release notes
Handled client's receive maximum property to configure the inflight window through the client
What does this PR do?
The main change contained in this PR is usage of a
sendQuota
in theMQTTConnection
to keep the inflight zone size instead ofSession
'sinflightSlots
. The method used to resend inflight messages has been updated to respect the send quota (akareceive_maximum
property ) expressed by the client on CONNECT message.If the inflight space is bigger than the actual send quota, maybe because the client squeezed it on a reconnection, it partition the inflight to fill up the send quota. The resend of inflight take precedence over queue drain both on processing of QoS1 PUBACK and QoS2 PURBEC.
If client connects through MQTT 3 the hardcoded limit (10) is used for inflight zone.
If it connects with MQTT5 it reads the
receive_maximum
property or set to default 65535 default value if not specified.Why is it important/What is the impact to the user?
Respect the
receive_maximum
asked from the client on MQTT5 connection.Checklist
[ ] I have made corresponding changes to the documentation[ ] I have made corresponding change to the default configuration files (and/or docker env variables)Related issues