Corrected Cancellation Source for KeepAlive Messages (#2129)

* Corrected Cancellation Source for KeepAlive Messages

* Use half of the keep alive value for the ping timeout

* Update release notes

* Update ReleaseNotes.md

* Update ReleaseNotes.md

* Update ReleaseNotes.md

---------

Co-authored-by: christian <6939810+chkr1011@users.noreply.github.com>
This commit is contained in:
Lucas T
2025-01-02 12:17:05 +01:00
committed by GitHub
co-authored by christian
parent 1cdc343e6d
commit 948c7c2b69
2 changed files with 8 additions and 5 deletions
+7 -5
View File
@@ -1041,11 +1041,13 @@ public sealed class MqttClient : Disposable, IMqttClient
if (timeWithoutPacketSent > keepAlivePeriod) if (timeWithoutPacketSent > keepAlivePeriod)
{ {
using (var timeoutCancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken)) using var pingTimeout = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
{
timeoutCancellationTokenSource.CancelAfter(Options.Timeout); // We already reached the keep alive timeout. Due to the RFC part [MQTT-3.1.2-24] the server will wait another
await PingAsync(timeoutCancellationTokenSource.Token).ConfigureAwait(false); // 1/2 of the keep alive time. So we can also use this value as the timeout.
} pingTimeout.CancelAfter(keepAlivePeriod / 2);
await PingAsync(pingTimeout.Token).ConfigureAwait(false);
} }
// Wait a fixed time in all cases. Calculation of the remaining time is complicated // Wait a fixed time in all cases. Calculation of the remaining time is complicated
+1
View File
@@ -13,6 +13,7 @@
* Client: MQTT 5.0.0 is now the default version when connecting with a server **(BREAKING CHANGE)** * Client: MQTT 5.0.0 is now the default version when connecting with a server **(BREAKING CHANGE)**
* Client: Fixed enhanced authentication. * Client: Fixed enhanced authentication.
* Client: Exposed WebSocket compression options in MQTT client options (thanks to @victornor, #2127) * Client: Exposed WebSocket compression options in MQTT client options (thanks to @victornor, #2127)
* Client: Fixed wrong timeout for keep alive check (thanks to @Erw1nT, #2129)
* Server: Fixed enhanced authentication. * Server: Fixed enhanced authentication.
* Server: Set default for "MaxPendingMessagesPerClient" to 1000 **(BREAKING CHANGE)** * Server: Set default for "MaxPendingMessagesPerClient" to 1000 **(BREAKING CHANGE)**
* Server: Set SSL version to "None" which will let the OS choose the version **(BREAKING CHANGE)** * Server: Set SSL version to "None" which will let the OS choose the version **(BREAKING CHANGE)**