From d4a8486b812bc35a334ef31eab14b0d28b8a04eb Mon Sep 17 00:00:00 2001 From: Radek Zikmund Date: Tue, 25 Jun 2024 17:04:12 +0200 Subject: [PATCH] Fix potential Debug.Assert in QuicListener --- .../System.Net.Quic/src/System/Net/Quic/QuicListener.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.cs index 9f63e1c85962a..bed55a08dc6a1 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.cs @@ -225,9 +225,9 @@ private async void StartConnectionHandshake(QuicConnection connection, SslClient // https://github.com/microsoft/msquic/discussions/2705. // This will be assigned to before the linked CTS is cancelled TimeSpan handshakeTimeout = QuicDefaults.HandshakeTimeout; + using CancellationTokenSource linkedCts = CancellationTokenSource.CreateLinkedTokenSource(_disposeCts.Token, connection.ConnectionShutdownToken); try { - using CancellationTokenSource linkedCts = CancellationTokenSource.CreateLinkedTokenSource(_disposeCts.Token, connection.ConnectionShutdownToken); cancellationToken = linkedCts.Token; // Initial timeout for retrieving connection options. linkedCts.CancelAfter(handshakeTimeout); @@ -249,7 +249,7 @@ private async void StartConnectionHandshake(QuicConnection connection, SslClient await connection.DisposeAsync().ConfigureAwait(false); } } - catch (OperationCanceledException) when (connection.ConnectionShutdownToken.IsCancellationRequested) + catch (OperationCanceledException) when (connection.ConnectionShutdownToken.IsCancellationRequested && !linkedCts.IsCancellationRequested) { // Connection closed by peer if (NetEventSource.Log.IsEnabled())