mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-30 10:42:48 +08:00
Backport of: 2129 cancellation token backport (#2144)
* Increase version * Update release notes * Adjust cancellation token handling * Fix CI build
This commit is contained in:
@@ -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).
|
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user