From 5da28ee13e04dfcae000cb84cc61473c689be5ac Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Wed, 28 Sep 2022 12:35:48 +0800 Subject: [PATCH 1/2] Turn HTTP/3 on by default in Kestrel --- src/Servers/Kestrel/Core/src/ListenOptions.cs | 2 +- .../Core/test/KestrelServerOptionsTests.cs | 2 +- .../Kestrel/Core/test/ListenOptionsTests.cs | 2 +- .../test/KestrelConfigurationLoaderTests.cs | 20 ++++++++++--------- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/ListenOptions.cs b/src/Servers/Kestrel/Core/src/ListenOptions.cs index e8dabefde6f3..296306841654 100644 --- a/src/Servers/Kestrel/Core/src/ListenOptions.cs +++ b/src/Servers/Kestrel/Core/src/ListenOptions.cs @@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core; /// public class ListenOptions : IConnectionBuilder, IMultiplexedConnectionBuilder { - internal const HttpProtocols DefaultHttpProtocols = HttpProtocols.Http1AndHttp2; + internal const HttpProtocols DefaultHttpProtocols = HttpProtocols.Http1AndHttp2AndHttp3; internal readonly List> _middleware = new List>(); internal readonly List> _multiplexedMiddleware = new List>(); diff --git a/src/Servers/Kestrel/Core/test/KestrelServerOptionsTests.cs b/src/Servers/Kestrel/Core/test/KestrelServerOptionsTests.cs index 690e56d98178..3fbf85b4baa8 100644 --- a/src/Servers/Kestrel/Core/test/KestrelServerOptionsTests.cs +++ b/src/Servers/Kestrel/Core/test/KestrelServerOptionsTests.cs @@ -28,7 +28,7 @@ public void ConfigureEndpointDefaultsAppliesToNewEndpoints() var options = new KestrelServerOptions(); options.ListenLocalhost(5000); - Assert.Equal(HttpProtocols.Http1AndHttp2, options.CodeBackedListenOptions[0].Protocols); + Assert.Equal(HttpProtocols.Http1AndHttp2AndHttp3, options.CodeBackedListenOptions[0].Protocols); options.ConfigureEndpointDefaults(opt => { diff --git a/src/Servers/Kestrel/Core/test/ListenOptionsTests.cs b/src/Servers/Kestrel/Core/test/ListenOptionsTests.cs index c22d0b922059..28d65a8e10c5 100644 --- a/src/Servers/Kestrel/Core/test/ListenOptionsTests.cs +++ b/src/Servers/Kestrel/Core/test/ListenOptionsTests.cs @@ -16,7 +16,7 @@ public class ListenOptionsTests public void ProtocolsDefault() { var listenOptions = new ListenOptions(new IPEndPoint(IPAddress.Loopback, 0)); - Assert.Equal(HttpProtocols.Http1AndHttp2, listenOptions.Protocols); + Assert.Equal(HttpProtocols.Http1AndHttp2AndHttp3, listenOptions.Protocols); } [Fact] diff --git a/src/Servers/Kestrel/Kestrel/test/KestrelConfigurationLoaderTests.cs b/src/Servers/Kestrel/Kestrel/test/KestrelConfigurationLoaderTests.cs index f4a10302463e..e5ffa8f8a9d5 100644 --- a/src/Servers/Kestrel/Kestrel/test/KestrelConfigurationLoaderTests.cs +++ b/src/Servers/Kestrel/Kestrel/test/KestrelConfigurationLoaderTests.cs @@ -633,7 +633,7 @@ private void EndpointConfigSectionCanSetProtocols(string input, HttpProtocols ex serverOptions.ConfigureEndpointDefaults(opt => { // Kestrel default. - Assert.Equal(HttpProtocols.Http1AndHttp2, opt.Protocols); + Assert.Equal(ListenOptions.DefaultHttpProtocols, opt.Protocols); ranDefault = true; }); @@ -663,14 +663,14 @@ private void EndpointConfigSectionCanSetProtocols(string input, HttpProtocols ex .LocalhostEndpoint(5002, opt => { // Kestrel default. - Assert.Equal(HttpProtocols.Http1AndHttp2, opt.Protocols); + Assert.Equal(ListenOptions.DefaultHttpProtocols, opt.Protocols); ran2 = true; }) .Load(); serverOptions.ListenAnyIP(0, opt => { // Kestrel default. - Assert.Equal(HttpProtocols.Http1AndHttp2, opt.Protocols); + Assert.Equal(ListenOptions.DefaultHttpProtocols, opt.Protocols); ran3 = true; }); @@ -1038,13 +1038,15 @@ public void Reload_IdentifiesEndpointsWithChangedDefaults() var (endpointsToStop, endpointsToStart) = serverOptions.ConfigurationLoader.Reload(); - Assert.Single(endpointsToStop); - Assert.Single(endpointsToStart); + // NonDefaultProtocol is unchanged and doesn't need to be stopped/started + var stopEndpoint = Assert.Single(endpointsToStop); + var startEndpoint = Assert.Single(endpointsToStart); + + Assert.Equal(5000, stopEndpoint.IPEndPoint.Port); + Assert.Equal(ListenOptions.DefaultHttpProtocols, stopEndpoint.Protocols); - Assert.Equal(5000, endpointsToStop[0].IPEndPoint.Port); - Assert.Equal(HttpProtocols.Http1AndHttp2, endpointsToStop[0].Protocols); - Assert.Equal(5000, endpointsToStart[0].IPEndPoint.Port); - Assert.Equal(HttpProtocols.Http1, endpointsToStart[0].Protocols); + Assert.Equal(5000, startEndpoint.IPEndPoint.Port); + Assert.Equal(HttpProtocols.Http1, startEndpoint.Protocols); } [Fact] From de457add06725a76c4dcb9549b88db9fc7091835 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Wed, 28 Sep 2022 12:41:04 +0800 Subject: [PATCH 2/2] Clean up --- src/Servers/Kestrel/Core/test/KestrelServerOptionsTests.cs | 2 +- src/Servers/Kestrel/Core/test/ListenOptionsTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Servers/Kestrel/Core/test/KestrelServerOptionsTests.cs b/src/Servers/Kestrel/Core/test/KestrelServerOptionsTests.cs index 3fbf85b4baa8..d213bdc2e5e5 100644 --- a/src/Servers/Kestrel/Core/test/KestrelServerOptionsTests.cs +++ b/src/Servers/Kestrel/Core/test/KestrelServerOptionsTests.cs @@ -28,7 +28,7 @@ public void ConfigureEndpointDefaultsAppliesToNewEndpoints() var options = new KestrelServerOptions(); options.ListenLocalhost(5000); - Assert.Equal(HttpProtocols.Http1AndHttp2AndHttp3, options.CodeBackedListenOptions[0].Protocols); + Assert.Equal(ListenOptions.DefaultHttpProtocols, options.CodeBackedListenOptions[0].Protocols); options.ConfigureEndpointDefaults(opt => { diff --git a/src/Servers/Kestrel/Core/test/ListenOptionsTests.cs b/src/Servers/Kestrel/Core/test/ListenOptionsTests.cs index 28d65a8e10c5..8166e83c7190 100644 --- a/src/Servers/Kestrel/Core/test/ListenOptionsTests.cs +++ b/src/Servers/Kestrel/Core/test/ListenOptionsTests.cs @@ -16,7 +16,7 @@ public class ListenOptionsTests public void ProtocolsDefault() { var listenOptions = new ListenOptions(new IPEndPoint(IPAddress.Loopback, 0)); - Assert.Equal(HttpProtocols.Http1AndHttp2AndHttp3, listenOptions.Protocols); + Assert.Equal(ListenOptions.DefaultHttpProtocols, listenOptions.Protocols); } [Fact]