Backport of: 2129 cancellation token backport (#2144)

* Increase version

* Update release notes

* Adjust cancellation token handling

* Fix CI build
This commit is contained in:
Christian
2025-03-02 11:57:02 +01:00
committed by GitHub
parent 740d605fd2
commit 7636cd0fdb
3 changed files with 9 additions and 10 deletions
+1 -5
View File
@@ -1,5 +1 @@
* Core: Fixed issue when parsing AUTH packet with 0 length body (#2039). * Client: Fixed wrong timeout for keep alive check (thanks to @Erw1nT, #2129)
* nuget: Changed code signing and nuget certificate (**BREAKING CHANGE**).
* TopicTemplates: Updated samples, parameter validation (#2022).
* ManagedClient: Switch SubscribeAsync/UnsubscribeAsync to IEnumerable<string> (#2026).
* Server: Fix _LoadingRetainedMessageAsync_ not executed (#2025).
+2 -2
View File
@@ -3,7 +3,7 @@ name: CI
on: [push, pull_request] on: [push, pull_request]
env: env:
VERSION: "4.3.7.${{github.run_number}}" VERSION: "4.3.8.${{github.run_number}}"
jobs: jobs:
build: build:
@@ -12,7 +12,7 @@ jobs:
steps: steps:
- name: Setup Windows SDK - name: Setup Windows SDK
uses: GuillaumeFalourd/setup-windows10-sdk-action@v1 uses: GuillaumeFalourd/setup-windows10-sdk-action@v2.4
with: with:
sdk-version: 18362 sdk-version: 18362
+6 -3
View File
@@ -1051,10 +1051,13 @@ namespace MQTTnet.Client
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((int)(keepAlivePeriod.TotalMilliseconds / 2));
await PingAsync(pingTimeout.Token).ConfigureAwait(false);
} }
} }