diff --git a/src/Kestrel.Core/Http2Limits.cs b/src/Kestrel.Core/Http2Limits.cs index bf30a0c414..d615df0e94 100644 --- a/src/Kestrel.Core/Http2Limits.cs +++ b/src/Kestrel.Core/Http2Limits.cs @@ -13,11 +13,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core { private int _maxStreamsPerConnection = 100; private int _headerTableSize = (int)Http2PeerSettings.DefaultHeaderTableSize; - private int _maxFrameSize = MinAllowedMaxFrameSize; - - // These are limits defined by the RFC https://tools.ietf.org/html/rfc7540#section-4.2 - public const int MinAllowedMaxFrameSize = 16 * 1024; - public const int MaxAllowedMaxFrameSize = 16 * 1024 * 1024 - 1; + private int _maxFrameSize = (int)Http2PeerSettings.DefaultMaxFrameSize; /// /// Limits the number of concurrent request streams per HTTP/2 connection. Excess streams will be refused. @@ -42,7 +38,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core /// /// Limits the size of the header compression table, in octets, the HPACK decoder on the server can use. /// - /// Defaults to 4096 + /// Value must be greater than 0, defaults to 4096 /// /// public int HeaderTableSize @@ -62,7 +58,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core /// /// Indicates the size of the largest frame payload that is allowed to be received, in octets. The size must be between 2^14 and 2^24-1. /// - /// Defaults to 2^14 (16,384) + /// Value must be between 2^14 and 2^24, defaults to 2^14 (16,384) /// /// public int MaxFrameSize @@ -70,9 +66,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core get => _maxFrameSize; set { - if (value < MinAllowedMaxFrameSize || value > MaxAllowedMaxFrameSize) + if (value < Http2PeerSettings.MinAllowedMaxFrameSize || value > Http2PeerSettings.MaxAllowedMaxFrameSize) { - throw new ArgumentOutOfRangeException(nameof(value), value, CoreStrings.FormatArgumentOutOfRange(MinAllowedMaxFrameSize, MaxAllowedMaxFrameSize)); + throw new ArgumentOutOfRangeException(nameof(value), value, CoreStrings.FormatArgumentOutOfRange(Http2PeerSettings.MinAllowedMaxFrameSize, Http2PeerSettings.MaxAllowedMaxFrameSize)); } _maxFrameSize = value; diff --git a/src/Kestrel.Core/Internal/Http2/Http2Connection.cs b/src/Kestrel.Core/Internal/Http2/Http2Connection.cs index 5b051ff224..d9dc7910b4 100644 --- a/src/Kestrel.Core/Internal/Http2/Http2Connection.cs +++ b/src/Kestrel.Core/Internal/Http2/Http2Connection.cs @@ -606,7 +606,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2 return Task.CompletedTask; } - private async Task ProcessSettingsFrameAsync() + private Task ProcessSettingsFrameAsync() { if (_currentHeadersStream != null) { @@ -625,7 +625,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2 throw new Http2ConnectionErrorException(CoreStrings.Http2ErrorSettingsAckLengthNotZero, Http2ErrorCode.FRAME_SIZE_ERROR); } - return; + return Task.CompletedTask; } if (_incomingFrame.PayloadLength % 6 != 0) @@ -642,7 +642,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2 _clientSettings.Update(_incomingFrame.GetSettings()); // Ack before we update the windows, they could send data immediately. - await _frameWriter.WriteSettingsAckAsync(); + var ackTask = _frameWriter.WriteSettingsAckAsync(); if (_clientSettings.MaxFrameSize != previousMaxFrameSize) { @@ -665,6 +665,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2 } } } + + return ackTask; } catch (Http2SettingsParameterOutOfRangeException ex) { diff --git a/src/Kestrel.Core/Internal/Http2/Http2FrameWriter.cs b/src/Kestrel.Core/Internal/Http2/Http2FrameWriter.cs index 35def3fc16..426c330314 100644 --- a/src/Kestrel.Core/Internal/Http2/Http2FrameWriter.cs +++ b/src/Kestrel.Core/Internal/Http2/Http2FrameWriter.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2 // Literal Header Field without Indexing - Indexed Name (Index 8 - :status) private static readonly byte[] _continueBytes = new byte[] { 0x08, 0x03, (byte)'1', (byte)'0', (byte)'0' }; - private uint _maxFrameSize = Http2Limits.MinAllowedMaxFrameSize; + private uint _maxFrameSize = Http2PeerSettings.MinAllowedMaxFrameSize; private Http2Frame _outgoingFrame; private readonly object _writeLock = new object(); private readonly HPackEncoder _hpackEncoder = new HPackEncoder(); diff --git a/src/Kestrel.Core/Internal/Http2/Http2PeerSettings.cs b/src/Kestrel.Core/Internal/Http2/Http2PeerSettings.cs index f11fed9ca7..129fc3e80d 100644 --- a/src/Kestrel.Core/Internal/Http2/Http2PeerSettings.cs +++ b/src/Kestrel.Core/Internal/Http2/Http2PeerSettings.cs @@ -12,9 +12,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2 public const bool DefaultEnablePush = true; public const uint DefaultMaxConcurrentStreams = uint.MaxValue; public const uint DefaultInitialWindowSize = 65535; - public const uint DefaultMaxFrameSize = Http2Limits.MinAllowedMaxFrameSize; + public const uint DefaultMaxFrameSize = MinAllowedMaxFrameSize; public const uint DefaultMaxHeaderListSize = uint.MaxValue; public const uint MaxWindowSize = int.MaxValue; + internal const int MinAllowedMaxFrameSize = 16 * 1024; + internal const int MaxAllowedMaxFrameSize = 16 * 1024 * 1024 - 1; public uint HeaderTableSize { get; set; } = DefaultHeaderTableSize; @@ -64,11 +66,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2 InitialWindowSize = value; break; case Http2SettingsParameter.SETTINGS_MAX_FRAME_SIZE: - if (value < Http2Limits.MinAllowedMaxFrameSize || value > Http2Limits.MaxAllowedMaxFrameSize) + if (value < MinAllowedMaxFrameSize || value > MaxAllowedMaxFrameSize) { throw new Http2SettingsParameterOutOfRangeException(Http2SettingsParameter.SETTINGS_MAX_FRAME_SIZE, - lowerBound: Http2Limits.MinAllowedMaxFrameSize, - upperBound: Http2Limits.MaxAllowedMaxFrameSize); + lowerBound: MinAllowedMaxFrameSize, + upperBound: MaxAllowedMaxFrameSize); } MaxFrameSize = value; diff --git a/test/Kestrel.InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs b/test/Kestrel.InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs index 390085f9f2..3a97c60a79 100644 --- a/test/Kestrel.InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs +++ b/test/Kestrel.InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs @@ -76,7 +76,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests private static readonly byte[] _worldBytes = Encoding.ASCII.GetBytes("world"); private static readonly byte[] _helloWorldBytes = Encoding.ASCII.GetBytes("hello, world"); private static readonly byte[] _noData = new byte[0]; - private static readonly byte[] _maxData = Encoding.ASCII.GetBytes(new string('a', Http2Limits.MinAllowedMaxFrameSize)); + private static readonly byte[] _maxData = Encoding.ASCII.GetBytes(new string('a', Http2PeerSettings.MinAllowedMaxFrameSize)); [Fact] public async Task Frame_Received_OverMaxSize_FrameError() @@ -84,20 +84,20 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests await InitializeConnectionAsync(_echoApplication); await StartStreamAsync(1, _browserRequestHeaders, endStream: false); - uint length = Http2Limits.MinAllowedMaxFrameSize + 1; + uint length = Http2PeerSettings.MinAllowedMaxFrameSize + 1; await SendDataAsync(1, new byte[length].AsSpan(), endStream: true); await WaitForConnectionErrorAsync( ignoreNonGoAwayFrames: true, expectedLastStreamId: 1, expectedErrorCode: Http2ErrorCode.FRAME_SIZE_ERROR, - expectedErrorMessage: CoreStrings.FormatHttp2ErrorFrameOverLimit(length, Http2Limits.MinAllowedMaxFrameSize)); + expectedErrorMessage: CoreStrings.FormatHttp2ErrorFrameOverLimit(length, Http2PeerSettings.MinAllowedMaxFrameSize)); } [Fact] public async Task ServerSettings_ChangesRequestMaxFrameSize() { - var length = Http2Limits.MinAllowedMaxFrameSize + 10; + var length = Http2PeerSettings.MinAllowedMaxFrameSize + 10; _connectionContext.ServiceContext.ServerOptions.Limits.Http2.MaxFrameSize = length; _connection = new Http2Connection(_connectionContext); @@ -112,11 +112,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests withStreamId: 1); // The client's settings is still defaulted to Http2PeerSettings.MinAllowedMaxFrameSize so the echo response will come back in two separate frames await ExpectAsync(Http2FrameType.DATA, - withLength: Http2Limits.MinAllowedMaxFrameSize, + withLength: Http2PeerSettings.MinAllowedMaxFrameSize, withFlags: (byte)Http2DataFrameFlags.NONE, withStreamId: 1); await ExpectAsync(Http2FrameType.DATA, - withLength: length - Http2Limits.MinAllowedMaxFrameSize, + withLength: length - Http2PeerSettings.MinAllowedMaxFrameSize, withFlags: (byte)Http2DataFrameFlags.NONE, withStreamId: 1); await ExpectAsync(Http2FrameType.DATA, @@ -2139,7 +2139,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests { await InitializeConnectionAsync(_noopApplication); - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareSettings(Http2SettingsFrameFlags.ACK); await SendAsync(frame.Raw); @@ -2262,7 +2262,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests { // This includes the default response headers such as :status, etc var defaultResponseHeaderLength = 37; - var headerValueLength = Http2Limits.MinAllowedMaxFrameSize; + var headerValueLength = Http2PeerSettings.MinAllowedMaxFrameSize; // First byte is always 0 // Second byte is the length of header name which is 1 // Third byte is the header name which is A/B diff --git a/test/Kestrel.InMemory.FunctionalTests/Http2/Http2TestBase.cs b/test/Kestrel.InMemory.FunctionalTests/Http2/Http2TestBase.cs index fff7a4bba7..126cbf8ef1 100644 --- a/test/Kestrel.InMemory.FunctionalTests/Http2/Http2TestBase.cs +++ b/test/Kestrel.InMemory.FunctionalTests/Http2/Http2TestBase.cs @@ -141,7 +141,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests _echoApplication = async context => { - var buffer = new byte[Http2Limits.MinAllowedMaxFrameSize]; + var buffer = new byte[Http2PeerSettings.MinAllowedMaxFrameSize]; var received = 0; while ((received = await context.Request.Body.ReadAsync(buffer, 0, buffer.Length)) > 0) @@ -152,7 +152,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests _echoWaitForAbortApplication = async context => { - var buffer = new byte[Http2Limits.MinAllowedMaxFrameSize]; + var buffer = new byte[Http2PeerSettings.MinAllowedMaxFrameSize]; var received = 0; while ((received = await context.Request.Body.ReadAsync(buffer, 0, buffer.Length)) > 0) @@ -315,7 +315,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests await SendSettingsAsync(); await ExpectAsync(Http2FrameType.SETTINGS, - withLength: expectedSettingsCount * 6, + withLength: expectedSettingsCount * Http2Frame.SettingSize, withFlags: 0, withStreamId: 0); @@ -330,7 +330,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); _runningStreams[streamId] = tcs; - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareHeaders(Http2HeadersFrameFlags.NONE, streamId); var done = _hpackEncoder.BeginEncode(headers, frame.HeadersPayload, out var length); frame.PayloadLength = length; @@ -367,7 +367,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); _runningStreams[streamId] = tcs; - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareHeaders(Http2HeadersFrameFlags.END_HEADERS | Http2HeadersFrameFlags.PADDED, streamId); frame.HeadersPadLength = padLength; @@ -390,7 +390,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); _runningStreams[streamId] = tcs; - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareHeaders(Http2HeadersFrameFlags.END_HEADERS | Http2HeadersFrameFlags.PRIORITY, streamId); frame.HeadersPriorityWeight = priority; frame.HeadersStreamDependency = streamDependency; @@ -412,7 +412,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); _runningStreams[streamId] = tcs; - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareHeaders(Http2HeadersFrameFlags.END_HEADERS | Http2HeadersFrameFlags.PADDED | Http2HeadersFrameFlags.PRIORITY, streamId); frame.HeadersPadLength = padLength; frame.HeadersPriorityWeight = priority; @@ -452,14 +452,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendSettingsAsync() { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareSettings(Http2SettingsFrameFlags.NONE, _clientSettings.GetNonProtocolDefaults()); return SendAsync(frame.Raw); } protected Task SendSettingsAckWithInvalidLengthAsync(int length) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareSettings(Http2SettingsFrameFlags.ACK); frame.PayloadLength = length; return SendAsync(frame.Raw); @@ -467,7 +467,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendSettingsWithInvalidStreamIdAsync(int streamId) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareSettings(Http2SettingsFrameFlags.NONE, _clientSettings.GetNonProtocolDefaults()); frame.StreamId = streamId; return SendAsync(frame.Raw); @@ -475,7 +475,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendSettingsWithInvalidLengthAsync(int length) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareSettings(Http2SettingsFrameFlags.NONE, _clientSettings.GetNonProtocolDefaults()); frame.PayloadLength = length; return SendAsync(frame.Raw); @@ -483,7 +483,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendSettingsWithInvalidParameterValueAsync(Http2SettingsParameter parameter, uint value) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareSettings(Http2SettingsFrameFlags.NONE); frame.PayloadLength = 6; @@ -499,7 +499,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendPushPromiseFrameAsync() { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PayloadLength = 0; frame.Type = Http2FrameType.PUSH_PROMISE; frame.StreamId = 1; @@ -508,7 +508,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected async Task SendHeadersAsync(int streamId, Http2HeadersFrameFlags flags, IEnumerable> headers) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareHeaders(flags, streamId); var done = _hpackEncoder.BeginEncode(headers, frame.Payload, out var length); @@ -521,7 +521,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendHeadersAsync(int streamId, Http2HeadersFrameFlags flags, byte[] headerBlock) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareHeaders(flags, streamId); frame.PayloadLength = headerBlock.Length; @@ -534,7 +534,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests { Assert.True(padLength >= payloadLength, $"{nameof(padLength)} must be greater than or equal to {nameof(payloadLength)} to create an invalid frame."); - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareHeaders(Http2HeadersFrameFlags.PADDED, streamId); frame.Payload[0] = padLength; @@ -547,7 +547,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendIncompleteHeadersFrameAsync(int streamId) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareHeaders(Http2HeadersFrameFlags.END_HEADERS, streamId); frame.PayloadLength = 3; @@ -563,7 +563,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected async Task SendContinuationAsync(int streamId, Http2ContinuationFrameFlags flags) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareContinuation(flags, streamId); var done = _hpackEncoder.Encode(frame.Payload, out var length); @@ -576,7 +576,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected async Task SendContinuationAsync(int streamId, Http2ContinuationFrameFlags flags, byte[] payload) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareContinuation(flags, streamId); frame.PayloadLength = payload.Length; @@ -587,7 +587,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendEmptyContinuationFrameAsync(int streamId, Http2ContinuationFrameFlags flags) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareContinuation(flags, streamId); frame.PayloadLength = 0; @@ -597,7 +597,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendIncompleteContinuationFrameAsync(int streamId) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareContinuation(Http2ContinuationFrameFlags.END_HEADERS, streamId); frame.PayloadLength = 3; @@ -625,7 +625,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendDataWithPaddingAsync(int streamId, Span data, byte padLength, bool endStream) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareData(streamId, padLength); frame.PayloadLength = data.Length + 1 + padLength; @@ -643,7 +643,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests { Assert.True(padLength >= frameLength, $"{nameof(padLength)} must be greater than or equal to {nameof(frameLength)} to create an invalid frame."); - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareData(streamId); frame.DataFlags = Http2DataFrameFlags.PADDED; @@ -657,14 +657,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendPingAsync(Http2PingFrameFlags flags) { - var pingFrame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var pingFrame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); pingFrame.PreparePing(flags); return SendAsync(pingFrame.Raw); } protected Task SendPingWithInvalidLengthAsync(int length) { - var pingFrame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var pingFrame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); pingFrame.PreparePing(Http2PingFrameFlags.NONE); pingFrame.PayloadLength = length; return SendAsync(pingFrame.Raw); @@ -674,7 +674,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests { Assert.NotEqual(0, streamId); - var pingFrame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var pingFrame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); pingFrame.PreparePing(Http2PingFrameFlags.NONE); pingFrame.StreamId = streamId; return SendAsync(pingFrame.Raw); @@ -682,14 +682,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendPriorityAsync(int streamId, int streamDependency = 0) { - var priorityFrame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var priorityFrame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); priorityFrame.PreparePriority(streamId, streamDependency: streamDependency, exclusive: false, weight: 0); return SendAsync(priorityFrame.Raw); } protected Task SendInvalidPriorityFrameAsync(int streamId, int length) { - var priorityFrame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var priorityFrame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); priorityFrame.PreparePriority(streamId, streamDependency: 0, exclusive: false, weight: 0); priorityFrame.PayloadLength = length; return SendAsync(priorityFrame.Raw); @@ -697,14 +697,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendRstStreamAsync(int streamId) { - var rstStreamFrame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var rstStreamFrame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); rstStreamFrame.PrepareRstStream(streamId, Http2ErrorCode.CANCEL); return SendAsync(rstStreamFrame.Raw); } protected Task SendInvalidRstStreamFrameAsync(int streamId, int length) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareRstStream(streamId, Http2ErrorCode.CANCEL); frame.PayloadLength = length; return SendAsync(frame.Raw); @@ -712,14 +712,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendGoAwayAsync() { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareGoAway(0, Http2ErrorCode.NO_ERROR); return SendAsync(frame.Raw); } protected Task SendInvalidGoAwayFrameAsync() { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareGoAway(0, Http2ErrorCode.NO_ERROR); frame.StreamId = 1; return SendAsync(frame.Raw); @@ -727,14 +727,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendWindowUpdateAsync(int streamId, int sizeIncrement) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareWindowUpdate(streamId, sizeIncrement); return SendAsync(frame.Raw); } protected Task SendInvalidWindowUpdateAsync(int streamId, int sizeIncrement, int length) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.PrepareWindowUpdate(streamId, sizeIncrement); frame.PayloadLength = length; return SendAsync(frame.Raw); @@ -742,7 +742,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests protected Task SendUnknownFrameTypeAsync(int streamId, int frameType) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); frame.StreamId = streamId; frame.Type = (Http2FrameType)frameType; frame.PayloadLength = 0; diff --git a/test/Kestrel.InMemory.FunctionalTests/Http2/TlsTests.cs b/test/Kestrel.InMemory.FunctionalTests/Http2/TlsTests.cs index 93718e2c34..1181b8030a 100644 --- a/test/Kestrel.InMemory.FunctionalTests/Http2/TlsTests.cs +++ b/test/Kestrel.InMemory.FunctionalTests/Http2/TlsTests.cs @@ -92,7 +92,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests.Http2 private async Task ReceiveFrameAsync(PipeReader reader) { - var frame = new Http2Frame(Http2Limits.MinAllowedMaxFrameSize); + var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize); while (true) {