Skip to content

Commit

Permalink
Swallow ObjectDisposedException when aborting QuicStream from Cancell…
Browse files Browse the repository at this point in the history
…ationAction (#75179)

Co-authored-by: Radek Zikmund <radekzikmund@microsoft.com>
  • Loading branch information
github-actions[bot] and rzikm committed Sep 8, 2022
1 parent f8b6128 commit 5d71eeb
Showing 1 changed file with 24 additions and 6 deletions.
30 changes: 24 additions & 6 deletions src/libraries/System.Net.Quic/src/System/Net/Quic/QuicStream.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,18 @@ public sealed partial class QuicStream
{
CancellationAction = target =>
{
if (target is QuicStream stream)
try
{
stream.Abort(QuicAbortDirection.Read, stream._defaultErrorCode);
if (target is QuicStream stream)
{
stream.Abort(QuicAbortDirection.Read, stream._defaultErrorCode);
}
}
catch (ObjectDisposedException)
{
// We collided with a Dispose in another thread. This can happen
// when using CancellationTokenSource.CancelAfter.
// Ignore the exception
}
}
};
Expand All @@ -83,9 +92,18 @@ public sealed partial class QuicStream
{
CancellationAction = target =>
{
if (target is QuicStream stream)
try
{
if (target is QuicStream stream)
{
stream.Abort(QuicAbortDirection.Write, stream._defaultErrorCode);
}
}
catch (ObjectDisposedException)
{
stream.Abort(QuicAbortDirection.Write, stream._defaultErrorCode);
// We collided with a Dispose in another thread. This can happen
// when using CancellationTokenSource.CancelAfter.
// Ignore the exception
}
}
};
Expand Down Expand Up @@ -491,8 +509,8 @@ private unsafe int HandleEventStartComplete(ref START_COMPLETE data)
private unsafe int HandleEventReceive(ref RECEIVE data)
{
ulong totalCopied = (ulong)_receiveBuffers.CopyFrom(
new ReadOnlySpan<QUIC_BUFFER>(data.Buffers, (int) data.BufferCount),
(int) data.TotalBufferLength,
new ReadOnlySpan<QUIC_BUFFER>(data.Buffers, (int)data.BufferCount),
(int)data.TotalBufferLength,
data.Flags.HasFlag(QUIC_RECEIVE_FLAGS.FIN));
if (totalCopied < data.TotalBufferLength)
{
Expand Down

0 comments on commit 5d71eeb

Please sign in to comment.