Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[release/7.0-preview7] Update dependencies from dotnet/runtime dotnet/efcore #42704

Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
96665b3
Update dependencies from https://github.com/dotnet/efcore build 20220…
dotnet-maestro[bot] Jul 13, 2022
475ebaa
Update dependencies from https://github.com/dotnet/efcore build 20220…
dotnet-maestro[bot] Jul 13, 2022
087ffe9
Update dependencies from https://github.com/dotnet/efcore build 20220…
dotnet-maestro[bot] Jul 13, 2022
d50775f
Update dependencies from https://github.com/dotnet/runtime build 2022…
dotnet-maestro[bot] Jul 13, 2022
12a4215
Update dependencies from https://github.com/dotnet/runtime build 2022…
dotnet-maestro[bot] Jul 13, 2022
df03161
React to QuicListener API changes
JamesNK Jul 13, 2022
24bb684
React to QuicException API changes and CertificateChainPolicy
JamesNK Jul 13, 2022
b78e410
Fix HTTP/3 http.sys tests
JamesNK Jul 13, 2022
6e1fcc3
React to Quic changes in IIS tests
Tratcher Jul 13, 2022
cad280c
Update dependencies from https://github.com/dotnet/runtime build 2022…
dotnet-maestro[bot] Jul 14, 2022
a6f5088
React to QUIC connection API changes
JamesNK Jul 14, 2022
1dc3cba
Qurantine ApplicationInitializationPageIsRequested
javiercn Jul 11, 2022
44b0953
Update dependencies from https://github.com/dotnet/runtime build 2022…
dotnet-maestro[bot] Jul 15, 2022
6b433fb
Update dependencies from https://github.com/dotnet/efcore build 20220…
dotnet-maestro[bot] Jul 15, 2022
6e83e01
Update dependencies from https://github.com/dotnet/runtime build 2022…
dotnet-maestro[bot] Jul 15, 2022
0a31006
Update dependencies from https://github.com/dotnet/efcore build 20220…
dotnet-maestro[bot] Jul 15, 2022
6ca031c
Update HTTP/3 ServerAbort_ClientReceivesAbort tests
halter73 Jul 15, 2022
a9d92a9
Increase HelixTimeout for ProjectTemplates.Blazor.WebAssembly.Tests t…
halter73 Jul 15, 2022
c0f2c2c
!fixup! Correct timeout syntax
dougbu Jul 16, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
276 changes: 138 additions & 138 deletions eng/Version.Details.xml

Large diffs are not rendered by default.

138 changes: 69 additions & 69 deletions eng/Versions.props

Large diffs are not rendered by default.

20 changes: 12 additions & 8 deletions src/Servers/HttpSys/test/FunctionalTests/Http3Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,9 @@ public async Task Http3_ResetBeforeHeaders()
client.DefaultRequestVersion = HttpVersion.Version30;
client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionExact;
var ex = await Assert.ThrowsAsync<HttpRequestException>(() => client.GetAsync(address));
var qex = Assert.IsType<QuicStreamAbortedException>(ex.InnerException);
Assert.Equal(0x010b, qex.ErrorCode);
var qex = Assert.IsType<QuicException>(ex.InnerException);
Assert.Equal(QuicError.StreamAborted, qex.QuicError);
Assert.Equal(0x010b, qex.ApplicationErrorCode.Value);
}

[ConditionalFact]
Expand Down Expand Up @@ -206,8 +207,9 @@ public async Task Http3_ResetAfterHeaders()
headersReceived.SetResult();
response.EnsureSuccessStatusCode();
var ex = await Assert.ThrowsAsync<HttpRequestException>(() => response.Content.ReadAsStringAsync());
var qex = Assert.IsType<QuicStreamAbortedException>(ex.InnerException?.InnerException?.InnerException);
Assert.Equal(0x010c, qex.ErrorCode);
var qex = Assert.IsType<QuicException>(ex.InnerException?.InnerException?.InnerException);
Assert.Equal(QuicError.StreamAborted, qex.QuicError);
Assert.Equal(0x010c, qex.ApplicationErrorCode.Value);
}

[ConditionalFact]
Expand All @@ -231,8 +233,9 @@ public async Task Http3_AppExceptionAfterHeaders_InternalError()
headersReceived.SetResult();
response.EnsureSuccessStatusCode();
var ex = await Assert.ThrowsAsync<HttpRequestException>(() => response.Content.ReadAsStringAsync());
var qex = Assert.IsType<QuicStreamAbortedException>(ex.InnerException?.InnerException?.InnerException);
Assert.Equal(0x0102, qex.ErrorCode); // H3_INTERNAL_ERROR
var qex = Assert.IsType<QuicException>(ex.InnerException?.InnerException?.InnerException);
Assert.Equal(QuicError.StreamAborted, qex.QuicError);
Assert.Equal(0x0102, qex.ApplicationErrorCode.Value); // H3_INTERNAL_ERROR
}

[ConditionalFact]
Expand All @@ -251,7 +254,8 @@ public async Task Http3_Abort_Cancel()
client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionExact;

var ex = await Assert.ThrowsAsync<HttpRequestException>(() => client.GetAsync(address));
var qex = Assert.IsType<QuicStreamAbortedException>(ex.InnerException);
Assert.Equal(0x010c, qex.ErrorCode); // H3_REQUEST_CANCELLED
var qex = Assert.IsType<QuicException>(ex.InnerException);
Assert.Equal(QuicError.StreamAborted, qex.QuicError);
Assert.Equal(0x010c, qex.ApplicationErrorCode.Value); // H3_REQUEST_CANCELLED
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
<TestGroupName>HttpSys.FunctionalTests</TestGroupName>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<!-- Required for System.Net.Quic which has a preview API in .NET 7 -->
<EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>

<ItemGroup>
Expand Down
20 changes: 12 additions & 8 deletions src/Servers/IIS/IIS/test/IIS.FunctionalTests/Http3Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,9 @@ public async Task Http3_ResetBeforeHeaders()
client.DefaultRequestVersion = HttpVersion.Version30;
client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionExact;
var ex = await Assert.ThrowsAsync<HttpRequestException>(() => client.GetAsync(address));
var qex = Assert.IsType<QuicStreamAbortedException>(ex.InnerException);
Assert.Equal(0x010b, qex.ErrorCode);
var qex = Assert.IsType<QuicException>(ex.InnerException);
Assert.Equal(QuicError.StreamAborted, qex.QuicError);
Assert.Equal(0x010b, qex.ApplicationErrorCode.Value);
}

[ConditionalFact]
Expand All @@ -135,8 +136,9 @@ public async Task Http3_ResetAfterHeaders()
await client.GetAsync(Fixture.Client.BaseAddress.ToString() + "Http3_ResetAfterHeaders_SetResult");
response.EnsureSuccessStatusCode();
var ex = await Assert.ThrowsAsync<HttpRequestException>(() => response.Content.ReadAsStringAsync());
var qex = Assert.IsType<QuicStreamAbortedException>(ex.InnerException?.InnerException?.InnerException);
Assert.Equal(0x010c, qex.ErrorCode); // H3_REQUEST_CANCELLED
var qex = Assert.IsType<QuicException>(ex.InnerException?.InnerException?.InnerException);
Assert.Equal(QuicError.StreamAborted, qex.QuicError);
Assert.Equal(0x010c, qex.ApplicationErrorCode.Value); // H3_REQUEST_CANCELLED
}

[ConditionalFact]
Expand All @@ -151,8 +153,9 @@ public async Task Http3_AppExceptionAfterHeaders_InternalError()
await client.GetAsync(Fixture.Client.BaseAddress.ToString() + "Http3_AppExceptionAfterHeaders_InternalError_SetResult");
response.EnsureSuccessStatusCode();
var ex = await Assert.ThrowsAsync<HttpRequestException>(() => response.Content.ReadAsStringAsync());
var qex = Assert.IsType<QuicStreamAbortedException>(ex.InnerException?.InnerException?.InnerException);
Assert.Equal(0x0102, qex.ErrorCode); // H3_INTERNAL_ERROR
var qex = Assert.IsType<QuicException>(ex.InnerException?.InnerException?.InnerException);
Assert.Equal(QuicError.StreamAborted, qex.QuicError);
Assert.Equal(0x0102, qex.ApplicationErrorCode.Value); // H3_INTERNAL_ERROR
}

[ConditionalFact]
Expand All @@ -164,8 +167,9 @@ public async Task Http3_Abort_Cancel()
client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionExact;

var ex = await Assert.ThrowsAsync<HttpRequestException>(() => client.GetAsync(address));
var qex = Assert.IsType<QuicStreamAbortedException>(ex.InnerException);
Assert.Equal(0x010c, qex.ErrorCode); // H3_REQUEST_CANCELLED
var qex = Assert.IsType<QuicException>(ex.InnerException);
Assert.Equal(QuicError.StreamAborted, qex.QuicError);
Assert.Equal(0x010c, qex.ApplicationErrorCode.Value); // H3_REQUEST_CANCELLED
}

private HttpClient SetUpClient()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
Expand All @@ -7,6 +7,8 @@
<DisableFastUpToDateCheck>True</DisableFastUpToDateCheck>
<SkipTests Condition=" '$(SkipIISTests)' == 'true' ">true</SkipTests>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<!-- Required for System.Net.Quic which has a preview API in .NET 7 -->
<EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>

<Import Project="../FunctionalTest.props" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ await RunTest(baseDeploymentParameters, async result =>
[RequiresNewHandler]
[InlineData(HostingModel.InProcess)]
[InlineData(HostingModel.OutOfProcess)]
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/42658")]
JamesNK marked this conversation as resolved.
Show resolved Hide resolved
public async Task ApplicationInitializationPageIsRequested(HostingModel hostingModel)
{
// This test often hits a memory leak in warmup.dll module, it has been reported to IIS team
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ internal static SslServerAuthenticationOptions CloneSslOptions(SslServerAuthenti
ServerCertificate = sslOptions.ServerCertificate,
ServerCertificateContext = sslOptions.ServerCertificateContext,
ServerCertificateSelectionCallback = sslOptions.ServerCertificateSelectionCallback,
CertificateChainPolicy = sslOptions.CertificateChainPolicy,
};

private sealed class SniOptions
Expand Down
5 changes: 5 additions & 0 deletions src/Servers/Kestrel/Core/test/SniOptionsSelectorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -794,6 +794,8 @@ public void CloneSslOptionsClonesAllProperties()
ServerCertificateContext = SslStreamCertificateContext.Create(_x509Certificate2, additionalCertificates: null, offline: true),
// Defaults to null
ServerCertificateSelectionCallback = (sender, serverName) => null,
// Defaults to null
CertificateChainPolicy = new X509ChainPolicy(),
};

var clonedOptions = SniOptionsSelector.CloneSslOptions(options);
Expand Down Expand Up @@ -836,6 +838,9 @@ public void CloneSslOptionsClonesAllProperties()
Assert.Same(options.ServerCertificateSelectionCallback, clonedOptions.ServerCertificateSelectionCallback);
Assert.True(propertyNames.Remove(nameof(options.ServerCertificateSelectionCallback)));

Assert.Same(options.CertificateChainPolicy, clonedOptions.CertificateChainPolicy);
Assert.True(propertyNames.Remove(nameof(options.CertificateChainPolicy)));

// Ensure we've checked every property. When new properties get added, we'll have to update this test along with the CloneSslOptions implementation.
Assert.Empty(propertyNames);
}
Expand Down
14 changes: 1 addition & 13 deletions src/Servers/Kestrel/Kestrel.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,11 @@
"solution": {
"path": "..\\..\\..\\AspNetCore.sln",
"projects": [
"src\\DataProtection\\Abstractions\\src\\Microsoft.AspNetCore.DataProtection.Abstractions.csproj",
"src\\DataProtection\\Cryptography.Internal\\src\\Microsoft.AspNetCore.Cryptography.Internal.csproj",
"src\\DataProtection\\DataProtection\\src\\Microsoft.AspNetCore.DataProtection.csproj",
"src\\DefaultBuilder\\src\\Microsoft.AspNetCore.csproj",
"src\\Extensions\\Features\\src\\Microsoft.Extensions.Features.csproj",
"src\\Extensions\\Features\\test\\Microsoft.Extensions.Features.Tests.csproj",
"src\\Hosting\\Abstractions\\src\\Microsoft.AspNetCore.Hosting.Abstractions.csproj",
"src\\Hosting\\Hosting\\src\\Microsoft.AspNetCore.Hosting.csproj",
"src\\Hosting\\Server.Abstractions\\src\\Microsoft.AspNetCore.Hosting.Server.Abstractions.csproj",
"src\\Http\\Authentication.Abstractions\\src\\Microsoft.AspNetCore.Authentication.Abstractions.csproj",
"src\\Http\\Authentication.Core\\src\\Microsoft.AspNetCore.Authentication.Core.csproj",
"src\\Http\\Headers\\src\\Microsoft.Net.Http.Headers.csproj",
"src\\Http\\Http.Abstractions\\src\\Microsoft.AspNetCore.Http.Abstractions.csproj",
"src\\Http\\Http.Extensions\\src\\Microsoft.AspNetCore.Http.Extensions.csproj",
Expand All @@ -27,13 +21,8 @@
"src\\Middleware\\HostFiltering\\src\\Microsoft.AspNetCore.HostFiltering.csproj",
"src\\Middleware\\HttpOverrides\\src\\Microsoft.AspNetCore.HttpOverrides.csproj",
"src\\ObjectPool\\src\\Microsoft.Extensions.ObjectPool.csproj",
"src\\Security\\Authentication\\Core\\src\\Microsoft.AspNetCore.Authentication.csproj",
"src\\Security\\Authorization\\Core\\src\\Microsoft.AspNetCore.Authorization.csproj",
"src\\Security\\Authorization\\Policy\\src\\Microsoft.AspNetCore.Authorization.Policy.csproj",
"src\\Servers\\Connections.Abstractions\\src\\Microsoft.AspNetCore.Connections.Abstractions.csproj",
"src\\Servers\\HttpSys\\src\\Microsoft.AspNetCore.Server.HttpSys.csproj",
"src\\Servers\\IIS\\IISIntegration\\src\\Microsoft.AspNetCore.Server.IISIntegration.csproj",
"src\\Servers\\IIS\\IIS\\src\\Microsoft.AspNetCore.Server.IIS.csproj",
"src\\Servers\\Kestrel\\Core\\src\\Microsoft.AspNetCore.Server.Kestrel.Core.csproj",
"src\\Servers\\Kestrel\\Core\\test\\Microsoft.AspNetCore.Server.Kestrel.Core.Tests.csproj",
"src\\Servers\\Kestrel\\Kestrel\\src\\Microsoft.AspNetCore.Server.Kestrel.csproj",
Expand All @@ -56,8 +45,7 @@
"src\\Servers\\Kestrel\\test\\Sockets.BindTests\\Sockets.BindTests.csproj",
"src\\Servers\\Kestrel\\test\\Sockets.FunctionalTests\\Sockets.FunctionalTests.csproj",
"src\\Servers\\Kestrel\\tools\\CodeGenerator\\CodeGenerator.csproj",
"src\\Testing\\src\\Microsoft.AspNetCore.Testing.csproj",
"src\\WebEncoders\\src\\Microsoft.Extensions.WebEncoders.csproj"
"src\\Testing\\src\\Microsoft.AspNetCore.Testing.csproj"
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public static class WebHostBuilderKestrelExtensions
public static IWebHostBuilder UseKestrel(this IWebHostBuilder hostBuilder)
{
hostBuilder.UseQuic();

return hostBuilder.ConfigureServices(services =>
{
// Don't override an already-configured transport
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public override async ValueTask DisposeAsync()
_log.LogWarning(ex, "Failed to gracefully shutdown connection.");
}

_connection.Dispose();
await _connection.DisposeAsync();
}

public override void Abort() => Abort(new ConnectionAbortedException("The connection was aborted by the application via MultiplexedConnectionContext.Abort()."));
Expand All @@ -91,7 +91,7 @@ public override void Abort(ConnectionAbortedException abortReason)
{
try
{
var stream = await _connection.AcceptStreamAsync(cancellationToken);
var stream = await _connection.AcceptInboundStreamAsync(cancellationToken);

QuicStreamContext? context = null;

Expand Down Expand Up @@ -122,11 +122,11 @@ public override void Abort(ConnectionAbortedException abortReason)

return context;
}
catch (QuicConnectionAbortedException ex)
catch (QuicException ex) when (ex.QuicError == QuicError.ConnectionAborted)
{
// Shutdown initiated by peer, abortive.
_error = ex.ErrorCode;
QuicLog.ConnectionAborted(_log, this, ex.ErrorCode, ex);
_error = ex.ApplicationErrorCode;
QuicLog.ConnectionAborted(_log, this, ex.ApplicationErrorCode.GetValueOrDefault(), ex);

ThreadPool.UnsafeQueueUserWorkItem(state =>
{
Expand All @@ -138,7 +138,7 @@ public override void Abort(ConnectionAbortedException abortReason)
// Throw error so consumer sees the connection is aborted by peer.
throw new ConnectionResetException(ex.Message, ex);
}
catch (QuicOperationAbortedException ex)
catch (QuicException ex) when (ex.QuicError == QuicError.OperationAborted)
{
lock (_shutdownLock)
{
Expand Down Expand Up @@ -194,16 +194,16 @@ public override async ValueTask<ConnectionContext> ConnectAsync(IFeatureCollecti
{
if (streamDirectionFeature.CanRead)
{
quicStream = await _connection.OpenBidirectionalStreamAsync(cancellationToken);
quicStream = await _connection.OpenOutboundStreamAsync(QuicStreamType.Bidirectional, cancellationToken);
}
else
{
quicStream = await _connection.OpenUnidirectionalStreamAsync(cancellationToken);
quicStream = await _connection.OpenOutboundStreamAsync(QuicStreamType.Unidirectional, cancellationToken);
}
}
else
{
quicStream = await _connection.OpenBidirectionalStreamAsync(cancellationToken);
quicStream = await _connection.OpenOutboundStreamAsync(QuicStreamType.Bidirectional, cancellationToken);
}

// Only a handful of control streams are created by the server and they last for the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,37 @@ public QuicConnectionListener(QuicTransportOptions options, ILogger log, EndPoin
throw new NotSupportedException("QUIC is not supported or enabled on this platform. See https://aka.ms/aspnet/kestrel/http3reqs for details.");
}

_log = log;
_context = new QuicTransportContext(_log, options);
_quicListenerOptions = new();

if (endpoint is not IPEndPoint listenEndPoint)
{
throw new InvalidOperationException($"QUIC doesn't support listening on the configured endpoint type. Expected {nameof(IPEndPoint)} but got {endpoint.GetType().Name}.");
}

_quicListenerOptions.ServerAuthenticationOptions = sslServerAuthenticationOptions;
_quicListenerOptions.ListenEndPoint = listenEndPoint;
_quicListenerOptions.IdleTimeout = options.IdleTimeout;
_quicListenerOptions.MaxBidirectionalStreams = options.MaxBidirectionalStreamCount;
_quicListenerOptions.MaxUnidirectionalStreams = options.MaxUnidirectionalStreamCount;
_quicListenerOptions.ListenBacklog = options.Backlog;
if (sslServerAuthenticationOptions.ApplicationProtocols is null || sslServerAuthenticationOptions.ApplicationProtocols.Count == 0)
{
throw new InvalidOperationException("No application protocols specified.");
}

_log = log;
_context = new QuicTransportContext(_log, options);
_quicListenerOptions = new QuicListenerOptions
{
ApplicationProtocols = sslServerAuthenticationOptions.ApplicationProtocols,
ListenEndPoint = listenEndPoint,
ListenBacklog = options.Backlog,
ConnectionOptionsCallback = (connection, helloInfo, cancellationToken) =>
{
var connectionOptions = new QuicServerConnectionOptions
{
ServerAuthenticationOptions = sslServerAuthenticationOptions,
IdleTimeout = options.IdleTimeout,
MaxInboundBidirectionalStreams = options.MaxBidirectionalStreamCount,
MaxInboundUnidirectionalStreams = options.MaxUnidirectionalStreamCount,
DefaultCloseErrorCode = 0,
DefaultStreamErrorCode = 0,
};
return ValueTask.FromResult(connectionOptions);
}
};

// Setting to listenEndPoint to prevent the property from being null.
// This will be initialized when CreateListenerAsync() is invoked.
Expand All @@ -56,7 +72,7 @@ public async ValueTask CreateListenerAsync()
_listener = await QuicListener.ListenAsync(_quicListenerOptions);

// Listener endpoint will resolve an ephemeral port, e.g. 127.0.0.1:0, into the actual port.
EndPoint = _listener.ListenEndPoint;
EndPoint = _listener.LocalEndPoint;
}

public async ValueTask<MultiplexedConnectionContext?> AcceptAsync(IFeatureCollection? features = null, CancellationToken cancellationToken = default)
Expand All @@ -75,7 +91,7 @@ public async ValueTask CreateListenerAsync()

return connectionContext;
}
catch (QuicOperationAbortedException ex)
catch (QuicException ex) when (ex.QuicError == QuicError.OperationAborted)
{
_log.LogDebug("Listener has aborted with exception: {Message}", ex.Message);
}
Expand All @@ -87,16 +103,17 @@ public async ValueTask UnbindAsync(CancellationToken cancellationToken = default
await DisposeAsync();
}

public ValueTask DisposeAsync()
public async ValueTask DisposeAsync()
{
if (_disposed)
{
return ValueTask.CompletedTask;
return;
}

_listener?.Dispose();
if (_listener != null)
{
await _listener.DisposeAsync();
}
_disposed = true;

return ValueTask.CompletedTask;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.Net.Quic;
using Microsoft.AspNetCore.Connections;
using Microsoft.AspNetCore.Connections.Features;

Expand Down Expand Up @@ -41,7 +42,7 @@ public void AbortRead(long errorCode, ConnectionAbortedException abortReason)
{
_shutdownReadReason = abortReason;
QuicLog.StreamAbortRead(_log, this, errorCode, abortReason.Message);
_stream.AbortRead(errorCode);
_stream.Abort(QuicAbortDirection.Read, errorCode);
}
else
{
Expand All @@ -61,7 +62,7 @@ public void AbortWrite(long errorCode, ConnectionAbortedException abortReason)
{
_shutdownWriteReason = abortReason;
QuicLog.StreamAbortWrite(_log, this, errorCode, abortReason.Message);
_stream.AbortWrite(errorCode);
_stream.Abort(QuicAbortDirection.Write, errorCode);
}
else
{
Expand Down
Loading