From 8ac930095a8eb1d4ee6db3771a0afdc4099aaffa Mon Sep 17 00:00:00 2001 From: wfurt Date: Mon, 19 Jul 2021 22:32:00 -0700 Subject: [PATCH] mitigation for quic tests hangs --- .../Net/Quic/Implementations/MsQuic/MsQuicStream.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicStream.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicStream.cs index 0c29a9285d6752..29a354537e4090 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicStream.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicStream.cs @@ -647,7 +647,9 @@ internal override int Read(Span buffer) byte[] rentedBuffer = ArrayPool.Shared.Rent(buffer.Length); try { - int readLength = ReadAsync(new Memory(rentedBuffer, 0, buffer.Length)).AsTask().GetAwaiter().GetResult(); + Task t = ReadAsync(new Memory(rentedBuffer, 0, buffer.Length)).AsTask(); + ((IAsyncResult)t).AsyncWaitHandle.WaitOne(); + int readLength = t.GetAwaiter().GetResult(); rentedBuffer.AsSpan(0, readLength).CopyTo(buffer); return readLength; } @@ -662,7 +664,9 @@ internal override void Write(ReadOnlySpan buffer) ThrowIfDisposed(); // TODO: optimize this. - WriteAsync(buffer.ToArray()).AsTask().GetAwaiter().GetResult(); + Task t = WriteAsync(buffer.ToArray()).AsTask(); + ((IAsyncResult)t).AsyncWaitHandle.WaitOne(); + t.GetAwaiter().GetResult(); } // MsQuic doesn't support explicit flushing