From d96a100bddc72606f7417b665428411388b8ac54 Mon Sep 17 00:00:00 2001 From: Daniel Genkin <104801075+Daniel-Genkin-MS-2@users.noreply.github.com> Date: Fri, 3 Jun 2022 12:28:43 -0700 Subject: [PATCH] Adding WebTransport Handshake to Kestrel (#41877) --- src/Http/Headers/src/HeaderNames.cs | 3 + src/Http/Headers/src/PublicAPI.Unshipped.txt | 1 + src/Servers/Kestrel/Core/src/CoreStrings.resx | 11 +- .../Internal/Http/HttpHeaders.Generated.cs | 1745 +++++++++-------- .../src/Internal/Http3/Http3Connection.cs | 10 + .../src/Internal/Http3/Http3ControlStream.cs | 2 + .../src/Internal/Http3/Http3PeerSettings.cs | 14 + .../src/Internal/Http3/Http3SettingType.cs | 15 +- .../Core/src/Internal/Http3/Http3Stream.cs | 30 +- .../Kestrel/Core/src/KestrelServerOptions.cs | 18 + .../Http3SampleApp/Http3SampleApp.csproj | 5 + .../Kestrel/samples/Http3SampleApp/Program.cs | 75 +- src/Servers/Kestrel/shared/KnownHeaders.cs | 5 +- .../Http3/WebTransportTests.cs | 138 ++ src/Shared/runtime/Http3/Http3SettingType.cs | 15 +- 15 files changed, 1260 insertions(+), 827 deletions(-) create mode 100644 src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/WebTransportTests.cs diff --git a/src/Http/Headers/src/HeaderNames.cs b/src/Http/Headers/src/HeaderNames.cs index 1d7611d5194..933331b1ade 100644 --- a/src/Http/Headers/src/HeaderNames.cs +++ b/src/Http/Headers/src/HeaderNames.cs @@ -189,6 +189,9 @@ public static class HeaderNames /// Gets the Pragma HTTP header name. public static readonly string Pragma = "Pragma"; + /// Gets the Protocol HTTP header name. + public static readonly string Protocol = ":protocol"; + /// Gets the Proxy-Authenticate HTTP header name. public static readonly string ProxyAuthenticate = "Proxy-Authenticate"; diff --git a/src/Http/Headers/src/PublicAPI.Unshipped.txt b/src/Http/Headers/src/PublicAPI.Unshipped.txt index 7dc5c58110b..3341834df9f 100644 --- a/src/Http/Headers/src/PublicAPI.Unshipped.txt +++ b/src/Http/Headers/src/PublicAPI.Unshipped.txt @@ -1 +1,2 @@ #nullable enable +static readonly Microsoft.Net.Http.Headers.HeaderNames.Protocol -> string! diff --git a/src/Servers/Kestrel/Core/src/CoreStrings.resx b/src/Servers/Kestrel/Core/src/CoreStrings.resx index c9f39d1da13..2dd65fc7073 100644 --- a/src/Servers/Kestrel/Core/src/CoreStrings.resx +++ b/src/Servers/Kestrel/Core/src/CoreStrings.resx @@ -668,4 +668,13 @@ For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?l Error initializing outbound control stream. - \ No newline at end of file + + HTTP/3 datagrams negotiation mismatch. Currently client has it '{clientStatus}' and server has it '{serverStatus}' + + + Method must be CONNECT when using the :protocol pseudo-header. + + + The :authority and/or :path pseudo-headers are missing. + + diff --git a/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.Generated.cs b/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.Generated.cs index 838b0463ab5..9f46dd48d71 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.Generated.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.Generated.cs @@ -77,6 +77,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http Origin, Path, Pragma, + Protocol, ProxyAuthenticate, ProxyAuthorization, ProxyConnection, @@ -277,7 +278,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http internal partial class HttpHeaders { - private readonly static HashSet _internedHeaderNames = new HashSet(96, StringComparer.OrdinalIgnoreCase) + private readonly static HashSet _internedHeaderNames = new HashSet(97, StringComparer.OrdinalIgnoreCase) { HeaderNames.Accept, HeaderNames.AcceptCharset, @@ -338,6 +339,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http HeaderNames.Origin, HeaderNames.Path, HeaderNames.Pragma, + HeaderNames.Protocol, HeaderNames.ProxyAuthenticate, HeaderNames.ProxyAuthorization, HeaderNames.ProxyConnection, @@ -383,8 +385,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http private HeaderReferences _headers; public bool HasConnection => (_bits & 0x2L) != 0; - public bool HasCookie => (_bits & 0x20000L) != 0; - public bool HasTransferEncoding => (_bits & 0x20000000000L) != 0; + public bool HasCookie => (_bits & 0x40000L) != 0; + public bool HasTransferEncoding => (_bits & 0x40000000000L) != 0; public int HostCount => _headers._Host.Count; @@ -508,14 +510,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http _headers._Path = value; } } - public StringValues HeaderScheme + public StringValues HeaderProtocol { get { StringValues value = default; if ((_bits & 0x80L) != 0) { - value = _headers._Scheme; + value = _headers._Protocol; } return value; } @@ -529,6 +531,30 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { _bits &= ~0x80L; } + _headers._Protocol = value; + } + } + public StringValues HeaderScheme + { + get + { + StringValues value = default; + if ((_bits & 0x100L) != 0) + { + value = _headers._Scheme; + } + return value; + } + set + { + if (!StringValues.IsNullOrEmpty(value)) + { + _bits |= 0x100L; + } + else + { + _bits &= ~0x100L; + } _headers._Scheme = value; } } @@ -537,7 +563,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { StringValues value = default; - if ((_bits & 0x20000000000L) != 0) + if ((_bits & 0x40000000000L) != 0) { value = _headers._TransferEncoding; } @@ -547,11 +573,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (!StringValues.IsNullOrEmpty(value)) { - _bits |= 0x20000000000L; + _bits |= 0x40000000000L; } else { - _bits &= ~0x20000000000L; + _bits &= ~0x40000000000L; } _headers._TransferEncoding = value; } @@ -690,7 +716,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._AcceptCharset; - if ((_bits & 0x100L) != 0) + if ((_bits & 0x200L) != 0) { return value; } @@ -700,7 +726,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x100L; + var flag = 0x200L; if (value.Count > 0) { _bits |= flag; @@ -718,7 +744,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._AcceptEncoding; - if ((_bits & 0x200L) != 0) + if ((_bits & 0x400L) != 0) { return value; } @@ -728,7 +754,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x200L; + var flag = 0x400L; if (value.Count > 0) { _bits |= flag; @@ -746,7 +772,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._AcceptLanguage; - if ((_bits & 0x400L) != 0) + if ((_bits & 0x800L) != 0) { return value; } @@ -756,7 +782,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x400L; + var flag = 0x800L; if (value.Count > 0) { _bits |= flag; @@ -774,7 +800,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._AccessControlRequestHeaders; - if ((_bits & 0x800L) != 0) + if ((_bits & 0x1000L) != 0) { return value; } @@ -784,7 +810,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x800L; + var flag = 0x1000L; if (value.Count > 0) { _bits |= flag; @@ -802,7 +828,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._AccessControlRequestMethod; - if ((_bits & 0x1000L) != 0) + if ((_bits & 0x2000L) != 0) { return value; } @@ -812,7 +838,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x1000L; + var flag = 0x2000L; if (value.Count > 0) { _bits |= flag; @@ -830,7 +856,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Authorization; - if ((_bits & 0x2000L) != 0) + if ((_bits & 0x4000L) != 0) { return value; } @@ -840,7 +866,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x2000L; + var flag = 0x4000L; if (value.Count > 0) { _bits |= flag; @@ -858,7 +884,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Baggage; - if ((_bits & 0x4000L) != 0) + if ((_bits & 0x8000L) != 0) { return value; } @@ -868,7 +894,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x4000L; + var flag = 0x8000L; if (value.Count > 0) { _bits |= flag; @@ -886,7 +912,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._CacheControl; - if ((_bits & 0x8000L) != 0) + if ((_bits & 0x10000L) != 0) { return value; } @@ -896,7 +922,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x8000L; + var flag = 0x10000L; if (value.Count > 0) { _bits |= flag; @@ -914,7 +940,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._ContentType; - if ((_bits & 0x10000L) != 0) + if ((_bits & 0x20000L) != 0) { return value; } @@ -924,7 +950,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x10000L; + var flag = 0x20000L; if (value.Count > 0) { _bits |= flag; @@ -942,7 +968,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Cookie; - if ((_bits & 0x20000L) != 0) + if ((_bits & 0x40000L) != 0) { return value; } @@ -952,7 +978,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x20000L; + var flag = 0x40000L; if (value.Count > 0) { _bits |= flag; @@ -970,7 +996,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._CorrelationContext; - if ((_bits & 0x40000L) != 0) + if ((_bits & 0x80000L) != 0) { return value; } @@ -980,7 +1006,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x40000L; + var flag = 0x80000L; if (value.Count > 0) { _bits |= flag; @@ -998,7 +1024,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Date; - if ((_bits & 0x80000L) != 0) + if ((_bits & 0x100000L) != 0) { return value; } @@ -1008,7 +1034,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x80000L; + var flag = 0x100000L; if (value.Count > 0) { _bits |= flag; @@ -1026,7 +1052,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Expect; - if ((_bits & 0x100000L) != 0) + if ((_bits & 0x200000L) != 0) { return value; } @@ -1036,7 +1062,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x100000L; + var flag = 0x200000L; if (value.Count > 0) { _bits |= flag; @@ -1054,7 +1080,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._From; - if ((_bits & 0x200000L) != 0) + if ((_bits & 0x400000L) != 0) { return value; } @@ -1064,7 +1090,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x200000L; + var flag = 0x400000L; if (value.Count > 0) { _bits |= flag; @@ -1082,7 +1108,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._GrpcAcceptEncoding; - if ((_bits & 0x400000L) != 0) + if ((_bits & 0x800000L) != 0) { return value; } @@ -1092,7 +1118,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x400000L; + var flag = 0x800000L; if (value.Count > 0) { _bits |= flag; @@ -1110,7 +1136,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._GrpcEncoding; - if ((_bits & 0x800000L) != 0) + if ((_bits & 0x1000000L) != 0) { return value; } @@ -1120,7 +1146,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x800000L; + var flag = 0x1000000L; if (value.Count > 0) { _bits |= flag; @@ -1138,7 +1164,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._GrpcTimeout; - if ((_bits & 0x1000000L) != 0) + if ((_bits & 0x2000000L) != 0) { return value; } @@ -1148,7 +1174,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x1000000L; + var flag = 0x2000000L; if (value.Count > 0) { _bits |= flag; @@ -1166,7 +1192,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._IfMatch; - if ((_bits & 0x2000000L) != 0) + if ((_bits & 0x4000000L) != 0) { return value; } @@ -1176,7 +1202,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x2000000L; + var flag = 0x4000000L; if (value.Count > 0) { _bits |= flag; @@ -1194,7 +1220,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._IfModifiedSince; - if ((_bits & 0x4000000L) != 0) + if ((_bits & 0x8000000L) != 0) { return value; } @@ -1204,7 +1230,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x4000000L; + var flag = 0x8000000L; if (value.Count > 0) { _bits |= flag; @@ -1222,7 +1248,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._IfNoneMatch; - if ((_bits & 0x8000000L) != 0) + if ((_bits & 0x10000000L) != 0) { return value; } @@ -1232,7 +1258,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x8000000L; + var flag = 0x10000000L; if (value.Count > 0) { _bits |= flag; @@ -1250,7 +1276,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._IfRange; - if ((_bits & 0x10000000L) != 0) + if ((_bits & 0x20000000L) != 0) { return value; } @@ -1260,7 +1286,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x10000000L; + var flag = 0x20000000L; if (value.Count > 0) { _bits |= flag; @@ -1278,7 +1304,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._IfUnmodifiedSince; - if ((_bits & 0x20000000L) != 0) + if ((_bits & 0x40000000L) != 0) { return value; } @@ -1288,7 +1314,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x20000000L; + var flag = 0x40000000L; if (value.Count > 0) { _bits |= flag; @@ -1306,7 +1332,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._KeepAlive; - if ((_bits & 0x40000000L) != 0) + if ((_bits & 0x80000000L) != 0) { return value; } @@ -1316,7 +1342,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x40000000L; + var flag = 0x80000000L; if (value.Count > 0) { _bits |= flag; @@ -1334,7 +1360,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._MaxForwards; - if ((_bits & 0x80000000L) != 0) + if ((_bits & 0x100000000L) != 0) { return value; } @@ -1344,7 +1370,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x80000000L; + var flag = 0x100000000L; if (value.Count > 0) { _bits |= flag; @@ -1362,7 +1388,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Origin; - if ((_bits & 0x100000000L) != 0) + if ((_bits & 0x200000000L) != 0) { return value; } @@ -1372,7 +1398,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x100000000L; + var flag = 0x200000000L; if (value.Count > 0) { _bits |= flag; @@ -1390,7 +1416,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Pragma; - if ((_bits & 0x200000000L) != 0) + if ((_bits & 0x400000000L) != 0) { return value; } @@ -1400,7 +1426,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x200000000L; + var flag = 0x400000000L; if (value.Count > 0) { _bits |= flag; @@ -1418,7 +1444,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._ProxyAuthorization; - if ((_bits & 0x400000000L) != 0) + if ((_bits & 0x800000000L) != 0) { return value; } @@ -1428,7 +1454,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x400000000L; + var flag = 0x800000000L; if (value.Count > 0) { _bits |= flag; @@ -1446,7 +1472,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Range; - if ((_bits & 0x800000000L) != 0) + if ((_bits & 0x1000000000L) != 0) { return value; } @@ -1456,7 +1482,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x800000000L; + var flag = 0x1000000000L; if (value.Count > 0) { _bits |= flag; @@ -1474,7 +1500,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Referer; - if ((_bits & 0x1000000000L) != 0) + if ((_bits & 0x2000000000L) != 0) { return value; } @@ -1484,7 +1510,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x1000000000L; + var flag = 0x2000000000L; if (value.Count > 0) { _bits |= flag; @@ -1502,7 +1528,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._RequestId; - if ((_bits & 0x2000000000L) != 0) + if ((_bits & 0x4000000000L) != 0) { return value; } @@ -1512,7 +1538,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x2000000000L; + var flag = 0x4000000000L; if (value.Count > 0) { _bits |= flag; @@ -1530,7 +1556,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._TE; - if ((_bits & 0x4000000000L) != 0) + if ((_bits & 0x8000000000L) != 0) { return value; } @@ -1540,7 +1566,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x4000000000L; + var flag = 0x8000000000L; if (value.Count > 0) { _bits |= flag; @@ -1558,7 +1584,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._TraceParent; - if ((_bits & 0x8000000000L) != 0) + if ((_bits & 0x10000000000L) != 0) { return value; } @@ -1568,7 +1594,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x8000000000L; + var flag = 0x10000000000L; if (value.Count > 0) { _bits |= flag; @@ -1586,7 +1612,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._TraceState; - if ((_bits & 0x10000000000L) != 0) + if ((_bits & 0x20000000000L) != 0) { return value; } @@ -1596,7 +1622,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x10000000000L; + var flag = 0x20000000000L; if (value.Count > 0) { _bits |= flag; @@ -1614,7 +1640,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._TransferEncoding; - if ((_bits & 0x20000000000L) != 0) + if ((_bits & 0x40000000000L) != 0) { return value; } @@ -1624,7 +1650,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x20000000000L; + var flag = 0x40000000000L; if (value.Count > 0) { _bits |= flag; @@ -1642,7 +1668,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Translate; - if ((_bits & 0x40000000000L) != 0) + if ((_bits & 0x80000000000L) != 0) { return value; } @@ -1652,7 +1678,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x40000000000L; + var flag = 0x80000000000L; if (value.Count > 0) { _bits |= flag; @@ -1670,7 +1696,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Upgrade; - if ((_bits & 0x80000000000L) != 0) + if ((_bits & 0x100000000000L) != 0) { return value; } @@ -1680,7 +1706,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x80000000000L; + var flag = 0x100000000000L; if (value.Count > 0) { _bits |= flag; @@ -1698,7 +1724,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._UpgradeInsecureRequests; - if ((_bits & 0x100000000000L) != 0) + if ((_bits & 0x200000000000L) != 0) { return value; } @@ -1708,7 +1734,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x100000000000L; + var flag = 0x200000000000L; if (value.Count > 0) { _bits |= flag; @@ -1726,7 +1752,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Via; - if ((_bits & 0x200000000000L) != 0) + if ((_bits & 0x400000000000L) != 0) { return value; } @@ -1736,7 +1762,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x200000000000L; + var flag = 0x400000000000L; if (value.Count > 0) { _bits |= flag; @@ -1754,7 +1780,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http get { var value = _headers._Warning; - if ((_bits & 0x400000000000L) != 0) + if ((_bits & 0x800000000000L) != 0) { return value; } @@ -1764,7 +1790,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (_isReadOnly) { ThrowHeadersReadOnlyException(); } - var flag = 0x400000000000L; + var flag = 0x800000000000L; if (value.Count > 0) { _bits |= flag; @@ -2575,7 +2601,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.TE, key)) { - if ((_bits & 0x4000000000L) != 0) + if ((_bits & 0x8000000000L) != 0) { value = _headers._TE; return true; @@ -2585,7 +2611,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.TE.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x4000000000L) != 0) + if ((_bits & 0x8000000000L) != 0) { value = _headers._TE; return true; @@ -2598,7 +2624,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.Via, key)) { - if ((_bits & 0x200000000000L) != 0) + if ((_bits & 0x400000000000L) != 0) { value = _headers._Via; return true; @@ -2608,7 +2634,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.Via.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200000000000L) != 0) + if ((_bits & 0x400000000000L) != 0) { value = _headers._Via; return true; @@ -2630,7 +2656,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Date, key)) { - if ((_bits & 0x80000L) != 0) + if ((_bits & 0x100000L) != 0) { value = _headers._Date; return true; @@ -2639,7 +2665,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.From, key)) { - if ((_bits & 0x200000L) != 0) + if ((_bits & 0x400000L) != 0) { value = _headers._From; return true; @@ -2658,7 +2684,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Date.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000L) != 0) + if ((_bits & 0x100000L) != 0) { value = _headers._Date; return true; @@ -2667,7 +2693,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.From.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200000L) != 0) + if ((_bits & 0x400000L) != 0) { value = _headers._From; return true; @@ -2689,7 +2715,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Range, key)) { - if ((_bits & 0x800000000L) != 0) + if ((_bits & 0x1000000000L) != 0) { value = _headers._Range; return true; @@ -2708,7 +2734,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Range.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x800000000L) != 0) + if ((_bits & 0x1000000000L) != 0) { value = _headers._Range; return true; @@ -2730,7 +2756,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Cookie, key)) { - if ((_bits & 0x20000L) != 0) + if ((_bits & 0x40000L) != 0) { value = _headers._Cookie; return true; @@ -2739,7 +2765,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Expect, key)) { - if ((_bits & 0x100000L) != 0) + if ((_bits & 0x200000L) != 0) { value = _headers._Expect; return true; @@ -2748,7 +2774,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Origin, key)) { - if ((_bits & 0x100000000L) != 0) + if ((_bits & 0x200000000L) != 0) { value = _headers._Origin; return true; @@ -2757,7 +2783,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Pragma, key)) { - if ((_bits & 0x200000000L) != 0) + if ((_bits & 0x400000000L) != 0) { value = _headers._Pragma; return true; @@ -2776,7 +2802,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Cookie.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000L) != 0) + if ((_bits & 0x40000L) != 0) { value = _headers._Cookie; return true; @@ -2785,7 +2811,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Expect.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100000L) != 0) + if ((_bits & 0x200000L) != 0) { value = _headers._Expect; return true; @@ -2794,7 +2820,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Origin.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100000000L) != 0) + if ((_bits & 0x200000000L) != 0) { value = _headers._Origin; return true; @@ -2803,7 +2829,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Pragma.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200000000L) != 0) + if ((_bits & 0x400000000L) != 0) { value = _headers._Pragma; return true; @@ -2825,7 +2851,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Scheme, key)) { - if ((_bits & 0x80L) != 0) + if ((_bits & 0x100L) != 0) { value = _headers._Scheme; return true; @@ -2834,7 +2860,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Baggage, key)) { - if ((_bits & 0x4000L) != 0) + if ((_bits & 0x8000L) != 0) { value = _headers._Baggage; return true; @@ -2843,7 +2869,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Referer, key)) { - if ((_bits & 0x1000000000L) != 0) + if ((_bits & 0x2000000000L) != 0) { value = _headers._Referer; return true; @@ -2852,7 +2878,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Upgrade, key)) { - if ((_bits & 0x80000000000L) != 0) + if ((_bits & 0x100000000000L) != 0) { value = _headers._Upgrade; return true; @@ -2861,7 +2887,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Warning, key)) { - if ((_bits & 0x400000000000L) != 0) + if ((_bits & 0x800000000000L) != 0) { value = _headers._Warning; return true; @@ -2880,7 +2906,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Scheme.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80L) != 0) + if ((_bits & 0x100L) != 0) { value = _headers._Scheme; return true; @@ -2889,7 +2915,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Baggage.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x4000L) != 0) + if ((_bits & 0x8000L) != 0) { value = _headers._Baggage; return true; @@ -2898,7 +2924,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Referer.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x1000000000L) != 0) + if ((_bits & 0x2000000000L) != 0) { value = _headers._Referer; return true; @@ -2907,7 +2933,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Upgrade.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000000000L) != 0) + if ((_bits & 0x100000000000L) != 0) { value = _headers._Upgrade; return true; @@ -2916,7 +2942,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Warning.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400000000000L) != 0) + if ((_bits & 0x800000000000L) != 0) { value = _headers._Warning; return true; @@ -2929,7 +2955,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.IfMatch, key)) { - if ((_bits & 0x2000000L) != 0) + if ((_bits & 0x4000000L) != 0) { value = _headers._IfMatch; return true; @@ -2938,7 +2964,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.IfRange, key)) { - if ((_bits & 0x10000000L) != 0) + if ((_bits & 0x20000000L) != 0) { value = _headers._IfRange; return true; @@ -2948,7 +2974,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.IfMatch.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x2000000L) != 0) + if ((_bits & 0x4000000L) != 0) { value = _headers._IfMatch; return true; @@ -2957,7 +2983,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.IfRange.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x10000000L) != 0) + if ((_bits & 0x20000000L) != 0) { value = _headers._IfRange; return true; @@ -2968,9 +2994,18 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } case 9: { + if (ReferenceEquals(HeaderNames.Protocol, key)) + { + if ((_bits & 0x80L) != 0) + { + value = _headers._Protocol; + return true; + } + return false; + } if (ReferenceEquals(HeaderNames.Translate, key)) { - if ((_bits & 0x40000000000L) != 0) + if ((_bits & 0x80000000000L) != 0) { value = _headers._Translate; return true; @@ -2978,9 +3013,18 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http return false; } + if (HeaderNames.Protocol.Equals(key, StringComparison.OrdinalIgnoreCase)) + { + if ((_bits & 0x80L) != 0) + { + value = _headers._Protocol; + return true; + } + return false; + } if (HeaderNames.Translate.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000000000L) != 0) + if ((_bits & 0x80000000000L) != 0) { value = _headers._Translate; return true; @@ -3020,7 +3064,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.KeepAlive, key)) { - if ((_bits & 0x40000000L) != 0) + if ((_bits & 0x80000000L) != 0) { value = _headers._KeepAlive; return true; @@ -3029,7 +3073,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.RequestId, key)) { - if ((_bits & 0x2000000000L) != 0) + if ((_bits & 0x4000000000L) != 0) { value = _headers._RequestId; return true; @@ -3038,7 +3082,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.TraceState, key)) { - if ((_bits & 0x10000000000L) != 0) + if ((_bits & 0x20000000000L) != 0) { value = _headers._TraceState; return true; @@ -3075,7 +3119,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.KeepAlive.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000000L) != 0) + if ((_bits & 0x80000000L) != 0) { value = _headers._KeepAlive; return true; @@ -3084,7 +3128,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.RequestId.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x2000000000L) != 0) + if ((_bits & 0x4000000000L) != 0) { value = _headers._RequestId; return true; @@ -3093,7 +3137,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.TraceState.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x10000000000L) != 0) + if ((_bits & 0x20000000000L) != 0) { value = _headers._TraceState; return true; @@ -3106,7 +3150,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.TraceParent, key)) { - if ((_bits & 0x8000000000L) != 0) + if ((_bits & 0x10000000000L) != 0) { value = _headers._TraceParent; return true; @@ -3116,7 +3160,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.TraceParent.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x8000000000L) != 0) + if ((_bits & 0x10000000000L) != 0) { value = _headers._TraceParent; return true; @@ -3129,7 +3173,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.ContentType, key)) { - if ((_bits & 0x10000L) != 0) + if ((_bits & 0x20000L) != 0) { value = _headers._ContentType; return true; @@ -3138,7 +3182,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.GrpcTimeout, key)) { - if ((_bits & 0x1000000L) != 0) + if ((_bits & 0x2000000L) != 0) { value = _headers._GrpcTimeout; return true; @@ -3147,7 +3191,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.MaxForwards, key)) { - if ((_bits & 0x80000000L) != 0) + if ((_bits & 0x100000000L) != 0) { value = _headers._MaxForwards; return true; @@ -3157,7 +3201,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.ContentType.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x10000L) != 0) + if ((_bits & 0x20000L) != 0) { value = _headers._ContentType; return true; @@ -3166,7 +3210,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.GrpcTimeout.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x1000000L) != 0) + if ((_bits & 0x2000000L) != 0) { value = _headers._GrpcTimeout; return true; @@ -3175,7 +3219,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.MaxForwards.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000000L) != 0) + if ((_bits & 0x100000000L) != 0) { value = _headers._MaxForwards; return true; @@ -3188,7 +3232,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.Authorization, key)) { - if ((_bits & 0x2000L) != 0) + if ((_bits & 0x4000L) != 0) { value = _headers._Authorization; return true; @@ -3197,7 +3241,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.CacheControl, key)) { - if ((_bits & 0x8000L) != 0) + if ((_bits & 0x10000L) != 0) { value = _headers._CacheControl; return true; @@ -3206,7 +3250,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.GrpcEncoding, key)) { - if ((_bits & 0x800000L) != 0) + if ((_bits & 0x1000000L) != 0) { value = _headers._GrpcEncoding; return true; @@ -3215,7 +3259,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.IfNoneMatch, key)) { - if ((_bits & 0x8000000L) != 0) + if ((_bits & 0x10000000L) != 0) { value = _headers._IfNoneMatch; return true; @@ -3225,7 +3269,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.Authorization.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x2000L) != 0) + if ((_bits & 0x4000L) != 0) { value = _headers._Authorization; return true; @@ -3234,7 +3278,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.CacheControl.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x8000L) != 0) + if ((_bits & 0x10000L) != 0) { value = _headers._CacheControl; return true; @@ -3243,7 +3287,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.GrpcEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x800000L) != 0) + if ((_bits & 0x1000000L) != 0) { value = _headers._GrpcEncoding; return true; @@ -3252,7 +3296,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.IfNoneMatch.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x8000000L) != 0) + if ((_bits & 0x10000000L) != 0) { value = _headers._IfNoneMatch; return true; @@ -3265,7 +3309,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AcceptCharset, key)) { - if ((_bits & 0x100L) != 0) + if ((_bits & 0x200L) != 0) { value = _headers._AcceptCharset; return true; @@ -3284,7 +3328,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AcceptCharset.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100L) != 0) + if ((_bits & 0x200L) != 0) { value = _headers._AcceptCharset; return true; @@ -3306,7 +3350,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AcceptEncoding, key)) { - if ((_bits & 0x200L) != 0) + if ((_bits & 0x400L) != 0) { value = _headers._AcceptEncoding; return true; @@ -3315,7 +3359,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.AcceptLanguage, key)) { - if ((_bits & 0x400L) != 0) + if ((_bits & 0x800L) != 0) { value = _headers._AcceptLanguage; return true; @@ -3325,7 +3369,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AcceptEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200L) != 0) + if ((_bits & 0x400L) != 0) { value = _headers._AcceptEncoding; return true; @@ -3334,7 +3378,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.AcceptLanguage.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400L) != 0) + if ((_bits & 0x800L) != 0) { value = _headers._AcceptLanguage; return true; @@ -3347,7 +3391,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.IfModifiedSince, key)) { - if ((_bits & 0x4000000L) != 0) + if ((_bits & 0x8000000L) != 0) { value = _headers._IfModifiedSince; return true; @@ -3356,7 +3400,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.TransferEncoding, key)) { - if ((_bits & 0x20000000000L) != 0) + if ((_bits & 0x40000000000L) != 0) { value = _headers._TransferEncoding; return true; @@ -3366,7 +3410,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.IfModifiedSince.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x4000000L) != 0) + if ((_bits & 0x8000000L) != 0) { value = _headers._IfModifiedSince; return true; @@ -3375,7 +3419,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.TransferEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000000000L) != 0) + if ((_bits & 0x40000000000L) != 0) { value = _headers._TransferEncoding; return true; @@ -3388,7 +3432,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.CorrelationContext, key)) { - if ((_bits & 0x40000L) != 0) + if ((_bits & 0x80000L) != 0) { value = _headers._CorrelationContext; return true; @@ -3397,7 +3441,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.IfUnmodifiedSince, key)) { - if ((_bits & 0x20000000L) != 0) + if ((_bits & 0x40000000L) != 0) { value = _headers._IfUnmodifiedSince; return true; @@ -3406,7 +3450,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.ProxyAuthorization, key)) { - if ((_bits & 0x400000000L) != 0) + if ((_bits & 0x800000000L) != 0) { value = _headers._ProxyAuthorization; return true; @@ -3416,7 +3460,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.CorrelationContext.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000L) != 0) + if ((_bits & 0x80000L) != 0) { value = _headers._CorrelationContext; return true; @@ -3425,7 +3469,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.IfUnmodifiedSince.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000000L) != 0) + if ((_bits & 0x40000000L) != 0) { value = _headers._IfUnmodifiedSince; return true; @@ -3434,7 +3478,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.ProxyAuthorization.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400000000L) != 0) + if ((_bits & 0x800000000L) != 0) { value = _headers._ProxyAuthorization; return true; @@ -3447,7 +3491,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.GrpcAcceptEncoding, key)) { - if ((_bits & 0x400000L) != 0) + if ((_bits & 0x800000L) != 0) { value = _headers._GrpcAcceptEncoding; return true; @@ -3457,7 +3501,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.GrpcAcceptEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400000L) != 0) + if ((_bits & 0x800000L) != 0) { value = _headers._GrpcAcceptEncoding; return true; @@ -3470,7 +3514,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.UpgradeInsecureRequests, key)) { - if ((_bits & 0x100000000000L) != 0) + if ((_bits & 0x200000000000L) != 0) { value = _headers._UpgradeInsecureRequests; return true; @@ -3480,7 +3524,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.UpgradeInsecureRequests.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100000000000L) != 0) + if ((_bits & 0x200000000000L) != 0) { value = _headers._UpgradeInsecureRequests; return true; @@ -3493,7 +3537,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AccessControlRequestMethod, key)) { - if ((_bits & 0x1000L) != 0) + if ((_bits & 0x2000L) != 0) { value = _headers._AccessControlRequestMethod; return true; @@ -3503,7 +3547,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AccessControlRequestMethod.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x1000L) != 0) + if ((_bits & 0x2000L) != 0) { value = _headers._AccessControlRequestMethod; return true; @@ -3516,7 +3560,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AccessControlRequestHeaders, key)) { - if ((_bits & 0x800L) != 0) + if ((_bits & 0x1000L) != 0) { value = _headers._AccessControlRequestHeaders; return true; @@ -3526,7 +3570,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AccessControlRequestHeaders.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x800L) != 0) + if ((_bits & 0x1000L) != 0) { value = _headers._AccessControlRequestHeaders; return true; @@ -3548,14 +3592,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.TE, key)) { - _bits |= 0x4000000000L; + _bits |= 0x8000000000L; _headers._TE = value; return; } if (HeaderNames.TE.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x4000000000L; + _bits |= 0x8000000000L; _headers._TE = value; return; } @@ -3565,14 +3609,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.Via, key)) { - _bits |= 0x200000000000L; + _bits |= 0x400000000000L; _headers._Via = value; return; } if (HeaderNames.Via.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x200000000000L; + _bits |= 0x400000000000L; _headers._Via = value; return; } @@ -3588,13 +3632,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Date, key)) { - _bits |= 0x80000L; + _bits |= 0x100000L; _headers._Date = value; return; } if (ReferenceEquals(HeaderNames.From, key)) { - _bits |= 0x200000L; + _bits |= 0x400000L; _headers._From = value; return; } @@ -3607,13 +3651,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Date.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x80000L; + _bits |= 0x100000L; _headers._Date = value; return; } if (HeaderNames.From.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x200000L; + _bits |= 0x400000L; _headers._From = value; return; } @@ -3629,7 +3673,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Range, key)) { - _bits |= 0x800000000L; + _bits |= 0x1000000000L; _headers._Range = value; return; } @@ -3642,7 +3686,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Range.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x800000000L; + _bits |= 0x1000000000L; _headers._Range = value; return; } @@ -3658,25 +3702,25 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Cookie, key)) { - _bits |= 0x20000L; + _bits |= 0x40000L; _headers._Cookie = value; return; } if (ReferenceEquals(HeaderNames.Expect, key)) { - _bits |= 0x100000L; + _bits |= 0x200000L; _headers._Expect = value; return; } if (ReferenceEquals(HeaderNames.Origin, key)) { - _bits |= 0x100000000L; + _bits |= 0x200000000L; _headers._Origin = value; return; } if (ReferenceEquals(HeaderNames.Pragma, key)) { - _bits |= 0x200000000L; + _bits |= 0x400000000L; _headers._Pragma = value; return; } @@ -3689,25 +3733,25 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Cookie.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x20000L; + _bits |= 0x40000L; _headers._Cookie = value; return; } if (HeaderNames.Expect.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x100000L; + _bits |= 0x200000L; _headers._Expect = value; return; } if (HeaderNames.Origin.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x100000000L; + _bits |= 0x200000000L; _headers._Origin = value; return; } if (HeaderNames.Pragma.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x200000000L; + _bits |= 0x400000000L; _headers._Pragma = value; return; } @@ -3723,31 +3767,31 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Scheme, key)) { - _bits |= 0x80L; + _bits |= 0x100L; _headers._Scheme = value; return; } if (ReferenceEquals(HeaderNames.Baggage, key)) { - _bits |= 0x4000L; + _bits |= 0x8000L; _headers._Baggage = value; return; } if (ReferenceEquals(HeaderNames.Referer, key)) { - _bits |= 0x1000000000L; + _bits |= 0x2000000000L; _headers._Referer = value; return; } if (ReferenceEquals(HeaderNames.Upgrade, key)) { - _bits |= 0x80000000000L; + _bits |= 0x100000000000L; _headers._Upgrade = value; return; } if (ReferenceEquals(HeaderNames.Warning, key)) { - _bits |= 0x400000000000L; + _bits |= 0x800000000000L; _headers._Warning = value; return; } @@ -3760,31 +3804,31 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Scheme.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x80L; + _bits |= 0x100L; _headers._Scheme = value; return; } if (HeaderNames.Baggage.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x4000L; + _bits |= 0x8000L; _headers._Baggage = value; return; } if (HeaderNames.Referer.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x1000000000L; + _bits |= 0x2000000000L; _headers._Referer = value; return; } if (HeaderNames.Upgrade.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x80000000000L; + _bits |= 0x100000000000L; _headers._Upgrade = value; return; } if (HeaderNames.Warning.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x400000000000L; + _bits |= 0x800000000000L; _headers._Warning = value; return; } @@ -3794,26 +3838,26 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.IfMatch, key)) { - _bits |= 0x2000000L; + _bits |= 0x4000000L; _headers._IfMatch = value; return; } if (ReferenceEquals(HeaderNames.IfRange, key)) { - _bits |= 0x10000000L; + _bits |= 0x20000000L; _headers._IfRange = value; return; } if (HeaderNames.IfMatch.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x2000000L; + _bits |= 0x4000000L; _headers._IfMatch = value; return; } if (HeaderNames.IfRange.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x10000000L; + _bits |= 0x20000000L; _headers._IfRange = value; return; } @@ -3821,16 +3865,28 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } case 9: { + if (ReferenceEquals(HeaderNames.Protocol, key)) + { + _bits |= 0x80L; + _headers._Protocol = value; + return; + } if (ReferenceEquals(HeaderNames.Translate, key)) { - _bits |= 0x40000000000L; + _bits |= 0x80000000000L; _headers._Translate = value; return; } + if (HeaderNames.Protocol.Equals(key, StringComparison.OrdinalIgnoreCase)) + { + _bits |= 0x80L; + _headers._Protocol = value; + return; + } if (HeaderNames.Translate.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x40000000000L; + _bits |= 0x80000000000L; _headers._Translate = value; return; } @@ -3858,19 +3914,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.KeepAlive, key)) { - _bits |= 0x40000000L; + _bits |= 0x80000000L; _headers._KeepAlive = value; return; } if (ReferenceEquals(HeaderNames.RequestId, key)) { - _bits |= 0x2000000000L; + _bits |= 0x4000000000L; _headers._RequestId = value; return; } if (ReferenceEquals(HeaderNames.TraceState, key)) { - _bits |= 0x10000000000L; + _bits |= 0x20000000000L; _headers._TraceState = value; return; } @@ -3895,19 +3951,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.KeepAlive.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x40000000L; + _bits |= 0x80000000L; _headers._KeepAlive = value; return; } if (HeaderNames.RequestId.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x2000000000L; + _bits |= 0x4000000000L; _headers._RequestId = value; return; } if (HeaderNames.TraceState.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x10000000000L; + _bits |= 0x20000000000L; _headers._TraceState = value; return; } @@ -3917,14 +3973,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.TraceParent, key)) { - _bits |= 0x8000000000L; + _bits |= 0x10000000000L; _headers._TraceParent = value; return; } if (HeaderNames.TraceParent.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x8000000000L; + _bits |= 0x10000000000L; _headers._TraceParent = value; return; } @@ -3934,38 +3990,38 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.ContentType, key)) { - _bits |= 0x10000L; + _bits |= 0x20000L; _headers._ContentType = value; return; } if (ReferenceEquals(HeaderNames.GrpcTimeout, key)) { - _bits |= 0x1000000L; + _bits |= 0x2000000L; _headers._GrpcTimeout = value; return; } if (ReferenceEquals(HeaderNames.MaxForwards, key)) { - _bits |= 0x80000000L; + _bits |= 0x100000000L; _headers._MaxForwards = value; return; } if (HeaderNames.ContentType.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x10000L; + _bits |= 0x20000L; _headers._ContentType = value; return; } if (HeaderNames.GrpcTimeout.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x1000000L; + _bits |= 0x2000000L; _headers._GrpcTimeout = value; return; } if (HeaderNames.MaxForwards.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x80000000L; + _bits |= 0x100000000L; _headers._MaxForwards = value; return; } @@ -3975,50 +4031,50 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.Authorization, key)) { - _bits |= 0x2000L; + _bits |= 0x4000L; _headers._Authorization = value; return; } if (ReferenceEquals(HeaderNames.CacheControl, key)) { - _bits |= 0x8000L; + _bits |= 0x10000L; _headers._CacheControl = value; return; } if (ReferenceEquals(HeaderNames.GrpcEncoding, key)) { - _bits |= 0x800000L; + _bits |= 0x1000000L; _headers._GrpcEncoding = value; return; } if (ReferenceEquals(HeaderNames.IfNoneMatch, key)) { - _bits |= 0x8000000L; + _bits |= 0x10000000L; _headers._IfNoneMatch = value; return; } if (HeaderNames.Authorization.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x2000L; + _bits |= 0x4000L; _headers._Authorization = value; return; } if (HeaderNames.CacheControl.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x8000L; + _bits |= 0x10000L; _headers._CacheControl = value; return; } if (HeaderNames.GrpcEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x800000L; + _bits |= 0x1000000L; _headers._GrpcEncoding = value; return; } if (HeaderNames.IfNoneMatch.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x8000000L; + _bits |= 0x10000000L; _headers._IfNoneMatch = value; return; } @@ -4028,7 +4084,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AcceptCharset, key)) { - _bits |= 0x100L; + _bits |= 0x200L; _headers._AcceptCharset = value; return; } @@ -4040,7 +4096,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AcceptCharset.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x100L; + _bits |= 0x200L; _headers._AcceptCharset = value; return; } @@ -4055,26 +4111,26 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AcceptEncoding, key)) { - _bits |= 0x200L; + _bits |= 0x400L; _headers._AcceptEncoding = value; return; } if (ReferenceEquals(HeaderNames.AcceptLanguage, key)) { - _bits |= 0x400L; + _bits |= 0x800L; _headers._AcceptLanguage = value; return; } if (HeaderNames.AcceptEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x200L; + _bits |= 0x400L; _headers._AcceptEncoding = value; return; } if (HeaderNames.AcceptLanguage.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x400L; + _bits |= 0x800L; _headers._AcceptLanguage = value; return; } @@ -4084,26 +4140,26 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.IfModifiedSince, key)) { - _bits |= 0x4000000L; + _bits |= 0x8000000L; _headers._IfModifiedSince = value; return; } if (ReferenceEquals(HeaderNames.TransferEncoding, key)) { - _bits |= 0x20000000000L; + _bits |= 0x40000000000L; _headers._TransferEncoding = value; return; } if (HeaderNames.IfModifiedSince.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x4000000L; + _bits |= 0x8000000L; _headers._IfModifiedSince = value; return; } if (HeaderNames.TransferEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x20000000000L; + _bits |= 0x40000000000L; _headers._TransferEncoding = value; return; } @@ -4113,38 +4169,38 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.CorrelationContext, key)) { - _bits |= 0x40000L; + _bits |= 0x80000L; _headers._CorrelationContext = value; return; } if (ReferenceEquals(HeaderNames.IfUnmodifiedSince, key)) { - _bits |= 0x20000000L; + _bits |= 0x40000000L; _headers._IfUnmodifiedSince = value; return; } if (ReferenceEquals(HeaderNames.ProxyAuthorization, key)) { - _bits |= 0x400000000L; + _bits |= 0x800000000L; _headers._ProxyAuthorization = value; return; } if (HeaderNames.CorrelationContext.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x40000L; + _bits |= 0x80000L; _headers._CorrelationContext = value; return; } if (HeaderNames.IfUnmodifiedSince.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x20000000L; + _bits |= 0x40000000L; _headers._IfUnmodifiedSince = value; return; } if (HeaderNames.ProxyAuthorization.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x400000000L; + _bits |= 0x800000000L; _headers._ProxyAuthorization = value; return; } @@ -4154,14 +4210,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.GrpcAcceptEncoding, key)) { - _bits |= 0x400000L; + _bits |= 0x800000L; _headers._GrpcAcceptEncoding = value; return; } if (HeaderNames.GrpcAcceptEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x400000L; + _bits |= 0x800000L; _headers._GrpcAcceptEncoding = value; return; } @@ -4171,14 +4227,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.UpgradeInsecureRequests, key)) { - _bits |= 0x100000000000L; + _bits |= 0x200000000000L; _headers._UpgradeInsecureRequests = value; return; } if (HeaderNames.UpgradeInsecureRequests.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x100000000000L; + _bits |= 0x200000000000L; _headers._UpgradeInsecureRequests = value; return; } @@ -4188,14 +4244,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AccessControlRequestMethod, key)) { - _bits |= 0x1000L; + _bits |= 0x2000L; _headers._AccessControlRequestMethod = value; return; } if (HeaderNames.AccessControlRequestMethod.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x1000L; + _bits |= 0x2000L; _headers._AccessControlRequestMethod = value; return; } @@ -4205,14 +4261,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AccessControlRequestHeaders, key)) { - _bits |= 0x800L; + _bits |= 0x1000L; _headers._AccessControlRequestHeaders = value; return; } if (HeaderNames.AccessControlRequestHeaders.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x800L; + _bits |= 0x1000L; _headers._AccessControlRequestHeaders = value; return; } @@ -4231,9 +4287,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.TE, key)) { - if ((_bits & 0x4000000000L) == 0) + if ((_bits & 0x8000000000L) == 0) { - _bits |= 0x4000000000L; + _bits |= 0x8000000000L; _headers._TE = value; return true; } @@ -4242,9 +4298,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.TE.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x4000000000L) == 0) + if ((_bits & 0x8000000000L) == 0) { - _bits |= 0x4000000000L; + _bits |= 0x8000000000L; _headers._TE = value; return true; } @@ -4256,9 +4312,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.Via, key)) { - if ((_bits & 0x200000000000L) == 0) + if ((_bits & 0x400000000000L) == 0) { - _bits |= 0x200000000000L; + _bits |= 0x400000000000L; _headers._Via = value; return true; } @@ -4267,9 +4323,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.Via.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200000000000L) == 0) + if ((_bits & 0x400000000000L) == 0) { - _bits |= 0x200000000000L; + _bits |= 0x400000000000L; _headers._Via = value; return true; } @@ -4291,9 +4347,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Date, key)) { - if ((_bits & 0x80000L) == 0) + if ((_bits & 0x100000L) == 0) { - _bits |= 0x80000L; + _bits |= 0x100000L; _headers._Date = value; return true; } @@ -4301,9 +4357,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.From, key)) { - if ((_bits & 0x200000L) == 0) + if ((_bits & 0x400000L) == 0) { - _bits |= 0x200000L; + _bits |= 0x400000L; _headers._From = value; return true; } @@ -4322,9 +4378,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Date.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000L) == 0) + if ((_bits & 0x100000L) == 0) { - _bits |= 0x80000L; + _bits |= 0x100000L; _headers._Date = value; return true; } @@ -4332,9 +4388,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.From.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200000L) == 0) + if ((_bits & 0x400000L) == 0) { - _bits |= 0x200000L; + _bits |= 0x400000L; _headers._From = value; return true; } @@ -4356,9 +4412,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Range, key)) { - if ((_bits & 0x800000000L) == 0) + if ((_bits & 0x1000000000L) == 0) { - _bits |= 0x800000000L; + _bits |= 0x1000000000L; _headers._Range = value; return true; } @@ -4377,9 +4433,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Range.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x800000000L) == 0) + if ((_bits & 0x1000000000L) == 0) { - _bits |= 0x800000000L; + _bits |= 0x1000000000L; _headers._Range = value; return true; } @@ -4401,9 +4457,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Cookie, key)) { - if ((_bits & 0x20000L) == 0) + if ((_bits & 0x40000L) == 0) { - _bits |= 0x20000L; + _bits |= 0x40000L; _headers._Cookie = value; return true; } @@ -4411,9 +4467,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Expect, key)) { - if ((_bits & 0x100000L) == 0) + if ((_bits & 0x200000L) == 0) { - _bits |= 0x100000L; + _bits |= 0x200000L; _headers._Expect = value; return true; } @@ -4421,9 +4477,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Origin, key)) { - if ((_bits & 0x100000000L) == 0) + if ((_bits & 0x200000000L) == 0) { - _bits |= 0x100000000L; + _bits |= 0x200000000L; _headers._Origin = value; return true; } @@ -4431,9 +4487,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Pragma, key)) { - if ((_bits & 0x200000000L) == 0) + if ((_bits & 0x400000000L) == 0) { - _bits |= 0x200000000L; + _bits |= 0x400000000L; _headers._Pragma = value; return true; } @@ -4452,9 +4508,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Cookie.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000L) == 0) + if ((_bits & 0x40000L) == 0) { - _bits |= 0x20000L; + _bits |= 0x40000L; _headers._Cookie = value; return true; } @@ -4462,9 +4518,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Expect.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100000L) == 0) + if ((_bits & 0x200000L) == 0) { - _bits |= 0x100000L; + _bits |= 0x200000L; _headers._Expect = value; return true; } @@ -4472,9 +4528,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Origin.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100000000L) == 0) + if ((_bits & 0x200000000L) == 0) { - _bits |= 0x100000000L; + _bits |= 0x200000000L; _headers._Origin = value; return true; } @@ -4482,9 +4538,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Pragma.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200000000L) == 0) + if ((_bits & 0x400000000L) == 0) { - _bits |= 0x200000000L; + _bits |= 0x400000000L; _headers._Pragma = value; return true; } @@ -4506,9 +4562,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Scheme, key)) { - if ((_bits & 0x80L) == 0) + if ((_bits & 0x100L) == 0) { - _bits |= 0x80L; + _bits |= 0x100L; _headers._Scheme = value; return true; } @@ -4516,9 +4572,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Baggage, key)) { - if ((_bits & 0x4000L) == 0) + if ((_bits & 0x8000L) == 0) { - _bits |= 0x4000L; + _bits |= 0x8000L; _headers._Baggage = value; return true; } @@ -4526,9 +4582,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Referer, key)) { - if ((_bits & 0x1000000000L) == 0) + if ((_bits & 0x2000000000L) == 0) { - _bits |= 0x1000000000L; + _bits |= 0x2000000000L; _headers._Referer = value; return true; } @@ -4536,9 +4592,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Upgrade, key)) { - if ((_bits & 0x80000000000L) == 0) + if ((_bits & 0x100000000000L) == 0) { - _bits |= 0x80000000000L; + _bits |= 0x100000000000L; _headers._Upgrade = value; return true; } @@ -4546,9 +4602,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Warning, key)) { - if ((_bits & 0x400000000000L) == 0) + if ((_bits & 0x800000000000L) == 0) { - _bits |= 0x400000000000L; + _bits |= 0x800000000000L; _headers._Warning = value; return true; } @@ -4567,9 +4623,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Scheme.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80L) == 0) + if ((_bits & 0x100L) == 0) { - _bits |= 0x80L; + _bits |= 0x100L; _headers._Scheme = value; return true; } @@ -4577,9 +4633,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Baggage.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x4000L) == 0) + if ((_bits & 0x8000L) == 0) { - _bits |= 0x4000L; + _bits |= 0x8000L; _headers._Baggage = value; return true; } @@ -4587,9 +4643,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Referer.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x1000000000L) == 0) + if ((_bits & 0x2000000000L) == 0) { - _bits |= 0x1000000000L; + _bits |= 0x2000000000L; _headers._Referer = value; return true; } @@ -4597,9 +4653,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Upgrade.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000000000L) == 0) + if ((_bits & 0x100000000000L) == 0) { - _bits |= 0x80000000000L; + _bits |= 0x100000000000L; _headers._Upgrade = value; return true; } @@ -4607,9 +4663,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Warning.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400000000000L) == 0) + if ((_bits & 0x800000000000L) == 0) { - _bits |= 0x400000000000L; + _bits |= 0x800000000000L; _headers._Warning = value; return true; } @@ -4621,9 +4677,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.IfMatch, key)) { - if ((_bits & 0x2000000L) == 0) + if ((_bits & 0x4000000L) == 0) { - _bits |= 0x2000000L; + _bits |= 0x4000000L; _headers._IfMatch = value; return true; } @@ -4631,9 +4687,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.IfRange, key)) { - if ((_bits & 0x10000000L) == 0) + if ((_bits & 0x20000000L) == 0) { - _bits |= 0x10000000L; + _bits |= 0x20000000L; _headers._IfRange = value; return true; } @@ -4642,9 +4698,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.IfMatch.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x2000000L) == 0) + if ((_bits & 0x4000000L) == 0) { - _bits |= 0x2000000L; + _bits |= 0x4000000L; _headers._IfMatch = value; return true; } @@ -4652,9 +4708,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.IfRange.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x10000000L) == 0) + if ((_bits & 0x20000000L) == 0) { - _bits |= 0x10000000L; + _bits |= 0x20000000L; _headers._IfRange = value; return true; } @@ -4664,22 +4720,42 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } case 9: { + if (ReferenceEquals(HeaderNames.Protocol, key)) + { + if ((_bits & 0x80L) == 0) + { + _bits |= 0x80L; + _headers._Protocol = value; + return true; + } + return false; + } if (ReferenceEquals(HeaderNames.Translate, key)) { - if ((_bits & 0x40000000000L) == 0) + if ((_bits & 0x80000000000L) == 0) { - _bits |= 0x40000000000L; + _bits |= 0x80000000000L; _headers._Translate = value; return true; } return false; } + if (HeaderNames.Protocol.Equals(key, StringComparison.OrdinalIgnoreCase)) + { + if ((_bits & 0x80L) == 0) + { + _bits |= 0x80L; + _headers._Protocol = value; + return true; + } + return false; + } if (HeaderNames.Translate.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000000000L) == 0) + if ((_bits & 0x80000000000L) == 0) { - _bits |= 0x40000000000L; + _bits |= 0x80000000000L; _headers._Translate = value; return true; } @@ -4721,9 +4797,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.KeepAlive, key)) { - if ((_bits & 0x40000000L) == 0) + if ((_bits & 0x80000000L) == 0) { - _bits |= 0x40000000L; + _bits |= 0x80000000L; _headers._KeepAlive = value; return true; } @@ -4731,9 +4807,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.RequestId, key)) { - if ((_bits & 0x2000000000L) == 0) + if ((_bits & 0x4000000000L) == 0) { - _bits |= 0x2000000000L; + _bits |= 0x4000000000L; _headers._RequestId = value; return true; } @@ -4741,9 +4817,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.TraceState, key)) { - if ((_bits & 0x10000000000L) == 0) + if ((_bits & 0x20000000000L) == 0) { - _bits |= 0x10000000000L; + _bits |= 0x20000000000L; _headers._TraceState = value; return true; } @@ -4782,9 +4858,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.KeepAlive.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000000L) == 0) + if ((_bits & 0x80000000L) == 0) { - _bits |= 0x40000000L; + _bits |= 0x80000000L; _headers._KeepAlive = value; return true; } @@ -4792,9 +4868,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.RequestId.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x2000000000L) == 0) + if ((_bits & 0x4000000000L) == 0) { - _bits |= 0x2000000000L; + _bits |= 0x4000000000L; _headers._RequestId = value; return true; } @@ -4802,9 +4878,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.TraceState.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x10000000000L) == 0) + if ((_bits & 0x20000000000L) == 0) { - _bits |= 0x10000000000L; + _bits |= 0x20000000000L; _headers._TraceState = value; return true; } @@ -4816,9 +4892,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.TraceParent, key)) { - if ((_bits & 0x8000000000L) == 0) + if ((_bits & 0x10000000000L) == 0) { - _bits |= 0x8000000000L; + _bits |= 0x10000000000L; _headers._TraceParent = value; return true; } @@ -4827,9 +4903,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.TraceParent.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x8000000000L) == 0) + if ((_bits & 0x10000000000L) == 0) { - _bits |= 0x8000000000L; + _bits |= 0x10000000000L; _headers._TraceParent = value; return true; } @@ -4841,9 +4917,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.ContentType, key)) { - if ((_bits & 0x10000L) == 0) + if ((_bits & 0x20000L) == 0) { - _bits |= 0x10000L; + _bits |= 0x20000L; _headers._ContentType = value; return true; } @@ -4851,9 +4927,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.GrpcTimeout, key)) { - if ((_bits & 0x1000000L) == 0) + if ((_bits & 0x2000000L) == 0) { - _bits |= 0x1000000L; + _bits |= 0x2000000L; _headers._GrpcTimeout = value; return true; } @@ -4861,9 +4937,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.MaxForwards, key)) { - if ((_bits & 0x80000000L) == 0) + if ((_bits & 0x100000000L) == 0) { - _bits |= 0x80000000L; + _bits |= 0x100000000L; _headers._MaxForwards = value; return true; } @@ -4872,9 +4948,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.ContentType.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x10000L) == 0) + if ((_bits & 0x20000L) == 0) { - _bits |= 0x10000L; + _bits |= 0x20000L; _headers._ContentType = value; return true; } @@ -4882,9 +4958,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.GrpcTimeout.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x1000000L) == 0) + if ((_bits & 0x2000000L) == 0) { - _bits |= 0x1000000L; + _bits |= 0x2000000L; _headers._GrpcTimeout = value; return true; } @@ -4892,9 +4968,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.MaxForwards.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000000L) == 0) + if ((_bits & 0x100000000L) == 0) { - _bits |= 0x80000000L; + _bits |= 0x100000000L; _headers._MaxForwards = value; return true; } @@ -4906,9 +4982,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.Authorization, key)) { - if ((_bits & 0x2000L) == 0) + if ((_bits & 0x4000L) == 0) { - _bits |= 0x2000L; + _bits |= 0x4000L; _headers._Authorization = value; return true; } @@ -4916,9 +4992,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.CacheControl, key)) { - if ((_bits & 0x8000L) == 0) + if ((_bits & 0x10000L) == 0) { - _bits |= 0x8000L; + _bits |= 0x10000L; _headers._CacheControl = value; return true; } @@ -4926,9 +5002,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.GrpcEncoding, key)) { - if ((_bits & 0x800000L) == 0) + if ((_bits & 0x1000000L) == 0) { - _bits |= 0x800000L; + _bits |= 0x1000000L; _headers._GrpcEncoding = value; return true; } @@ -4936,9 +5012,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.IfNoneMatch, key)) { - if ((_bits & 0x8000000L) == 0) + if ((_bits & 0x10000000L) == 0) { - _bits |= 0x8000000L; + _bits |= 0x10000000L; _headers._IfNoneMatch = value; return true; } @@ -4947,9 +5023,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.Authorization.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x2000L) == 0) + if ((_bits & 0x4000L) == 0) { - _bits |= 0x2000L; + _bits |= 0x4000L; _headers._Authorization = value; return true; } @@ -4957,9 +5033,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.CacheControl.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x8000L) == 0) + if ((_bits & 0x10000L) == 0) { - _bits |= 0x8000L; + _bits |= 0x10000L; _headers._CacheControl = value; return true; } @@ -4967,9 +5043,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.GrpcEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x800000L) == 0) + if ((_bits & 0x1000000L) == 0) { - _bits |= 0x800000L; + _bits |= 0x1000000L; _headers._GrpcEncoding = value; return true; } @@ -4977,9 +5053,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.IfNoneMatch.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x8000000L) == 0) + if ((_bits & 0x10000000L) == 0) { - _bits |= 0x8000000L; + _bits |= 0x10000000L; _headers._IfNoneMatch = value; return true; } @@ -4991,9 +5067,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AcceptCharset, key)) { - if ((_bits & 0x100L) == 0) + if ((_bits & 0x200L) == 0) { - _bits |= 0x100L; + _bits |= 0x200L; _headers._AcceptCharset = value; return true; } @@ -5011,9 +5087,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AcceptCharset.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100L) == 0) + if ((_bits & 0x200L) == 0) { - _bits |= 0x100L; + _bits |= 0x200L; _headers._AcceptCharset = value; return true; } @@ -5034,9 +5110,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AcceptEncoding, key)) { - if ((_bits & 0x200L) == 0) + if ((_bits & 0x400L) == 0) { - _bits |= 0x200L; + _bits |= 0x400L; _headers._AcceptEncoding = value; return true; } @@ -5044,9 +5120,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.AcceptLanguage, key)) { - if ((_bits & 0x400L) == 0) + if ((_bits & 0x800L) == 0) { - _bits |= 0x400L; + _bits |= 0x800L; _headers._AcceptLanguage = value; return true; } @@ -5055,9 +5131,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AcceptEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200L) == 0) + if ((_bits & 0x400L) == 0) { - _bits |= 0x200L; + _bits |= 0x400L; _headers._AcceptEncoding = value; return true; } @@ -5065,9 +5141,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.AcceptLanguage.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400L) == 0) + if ((_bits & 0x800L) == 0) { - _bits |= 0x400L; + _bits |= 0x800L; _headers._AcceptLanguage = value; return true; } @@ -5079,9 +5155,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.IfModifiedSince, key)) { - if ((_bits & 0x4000000L) == 0) + if ((_bits & 0x8000000L) == 0) { - _bits |= 0x4000000L; + _bits |= 0x8000000L; _headers._IfModifiedSince = value; return true; } @@ -5089,9 +5165,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.TransferEncoding, key)) { - if ((_bits & 0x20000000000L) == 0) + if ((_bits & 0x40000000000L) == 0) { - _bits |= 0x20000000000L; + _bits |= 0x40000000000L; _headers._TransferEncoding = value; return true; } @@ -5100,9 +5176,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.IfModifiedSince.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x4000000L) == 0) + if ((_bits & 0x8000000L) == 0) { - _bits |= 0x4000000L; + _bits |= 0x8000000L; _headers._IfModifiedSince = value; return true; } @@ -5110,9 +5186,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.TransferEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000000000L) == 0) + if ((_bits & 0x40000000000L) == 0) { - _bits |= 0x20000000000L; + _bits |= 0x40000000000L; _headers._TransferEncoding = value; return true; } @@ -5124,9 +5200,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.CorrelationContext, key)) { - if ((_bits & 0x40000L) == 0) + if ((_bits & 0x80000L) == 0) { - _bits |= 0x40000L; + _bits |= 0x80000L; _headers._CorrelationContext = value; return true; } @@ -5134,9 +5210,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.IfUnmodifiedSince, key)) { - if ((_bits & 0x20000000L) == 0) + if ((_bits & 0x40000000L) == 0) { - _bits |= 0x20000000L; + _bits |= 0x40000000L; _headers._IfUnmodifiedSince = value; return true; } @@ -5144,9 +5220,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.ProxyAuthorization, key)) { - if ((_bits & 0x400000000L) == 0) + if ((_bits & 0x800000000L) == 0) { - _bits |= 0x400000000L; + _bits |= 0x800000000L; _headers._ProxyAuthorization = value; return true; } @@ -5155,9 +5231,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.CorrelationContext.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000L) == 0) + if ((_bits & 0x80000L) == 0) { - _bits |= 0x40000L; + _bits |= 0x80000L; _headers._CorrelationContext = value; return true; } @@ -5165,9 +5241,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.IfUnmodifiedSince.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000000L) == 0) + if ((_bits & 0x40000000L) == 0) { - _bits |= 0x20000000L; + _bits |= 0x40000000L; _headers._IfUnmodifiedSince = value; return true; } @@ -5175,9 +5251,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.ProxyAuthorization.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400000000L) == 0) + if ((_bits & 0x800000000L) == 0) { - _bits |= 0x400000000L; + _bits |= 0x800000000L; _headers._ProxyAuthorization = value; return true; } @@ -5189,9 +5265,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.GrpcAcceptEncoding, key)) { - if ((_bits & 0x400000L) == 0) + if ((_bits & 0x800000L) == 0) { - _bits |= 0x400000L; + _bits |= 0x800000L; _headers._GrpcAcceptEncoding = value; return true; } @@ -5200,9 +5276,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.GrpcAcceptEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400000L) == 0) + if ((_bits & 0x800000L) == 0) { - _bits |= 0x400000L; + _bits |= 0x800000L; _headers._GrpcAcceptEncoding = value; return true; } @@ -5214,9 +5290,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.UpgradeInsecureRequests, key)) { - if ((_bits & 0x100000000000L) == 0) + if ((_bits & 0x200000000000L) == 0) { - _bits |= 0x100000000000L; + _bits |= 0x200000000000L; _headers._UpgradeInsecureRequests = value; return true; } @@ -5225,9 +5301,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.UpgradeInsecureRequests.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100000000000L) == 0) + if ((_bits & 0x200000000000L) == 0) { - _bits |= 0x100000000000L; + _bits |= 0x200000000000L; _headers._UpgradeInsecureRequests = value; return true; } @@ -5239,9 +5315,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AccessControlRequestMethod, key)) { - if ((_bits & 0x1000L) == 0) + if ((_bits & 0x2000L) == 0) { - _bits |= 0x1000L; + _bits |= 0x2000L; _headers._AccessControlRequestMethod = value; return true; } @@ -5250,9 +5326,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AccessControlRequestMethod.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x1000L) == 0) + if ((_bits & 0x2000L) == 0) { - _bits |= 0x1000L; + _bits |= 0x2000L; _headers._AccessControlRequestMethod = value; return true; } @@ -5264,9 +5340,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AccessControlRequestHeaders, key)) { - if ((_bits & 0x800L) == 0) + if ((_bits & 0x1000L) == 0) { - _bits |= 0x800L; + _bits |= 0x1000L; _headers._AccessControlRequestHeaders = value; return true; } @@ -5275,9 +5351,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AccessControlRequestHeaders.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x800L) == 0) + if ((_bits & 0x1000L) == 0) { - _bits |= 0x800L; + _bits |= 0x1000L; _headers._AccessControlRequestHeaders = value; return true; } @@ -5298,9 +5374,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.TE, key)) { - if ((_bits & 0x4000000000L) != 0) + if ((_bits & 0x8000000000L) != 0) { - _bits &= ~0x4000000000L; + _bits &= ~0x8000000000L; _headers._TE = default(StringValues); return true; } @@ -5309,9 +5385,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.TE.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x4000000000L) != 0) + if ((_bits & 0x8000000000L) != 0) { - _bits &= ~0x4000000000L; + _bits &= ~0x8000000000L; _headers._TE = default(StringValues); return true; } @@ -5323,9 +5399,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.Via, key)) { - if ((_bits & 0x200000000000L) != 0) + if ((_bits & 0x400000000000L) != 0) { - _bits &= ~0x200000000000L; + _bits &= ~0x400000000000L; _headers._Via = default(StringValues); return true; } @@ -5334,9 +5410,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.Via.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200000000000L) != 0) + if ((_bits & 0x400000000000L) != 0) { - _bits &= ~0x200000000000L; + _bits &= ~0x400000000000L; _headers._Via = default(StringValues); return true; } @@ -5358,9 +5434,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Date, key)) { - if ((_bits & 0x80000L) != 0) + if ((_bits & 0x100000L) != 0) { - _bits &= ~0x80000L; + _bits &= ~0x100000L; _headers._Date = default(StringValues); return true; } @@ -5368,9 +5444,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.From, key)) { - if ((_bits & 0x200000L) != 0) + if ((_bits & 0x400000L) != 0) { - _bits &= ~0x200000L; + _bits &= ~0x400000L; _headers._From = default(StringValues); return true; } @@ -5389,9 +5465,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Date.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000L) != 0) + if ((_bits & 0x100000L) != 0) { - _bits &= ~0x80000L; + _bits &= ~0x100000L; _headers._Date = default(StringValues); return true; } @@ -5399,9 +5475,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.From.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200000L) != 0) + if ((_bits & 0x400000L) != 0) { - _bits &= ~0x200000L; + _bits &= ~0x400000L; _headers._From = default(StringValues); return true; } @@ -5423,9 +5499,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Range, key)) { - if ((_bits & 0x800000000L) != 0) + if ((_bits & 0x1000000000L) != 0) { - _bits &= ~0x800000000L; + _bits &= ~0x1000000000L; _headers._Range = default(StringValues); return true; } @@ -5444,9 +5520,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Range.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x800000000L) != 0) + if ((_bits & 0x1000000000L) != 0) { - _bits &= ~0x800000000L; + _bits &= ~0x1000000000L; _headers._Range = default(StringValues); return true; } @@ -5468,9 +5544,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Cookie, key)) { - if ((_bits & 0x20000L) != 0) + if ((_bits & 0x40000L) != 0) { - _bits &= ~0x20000L; + _bits &= ~0x40000L; _headers._Cookie = default(StringValues); return true; } @@ -5478,9 +5554,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Expect, key)) { - if ((_bits & 0x100000L) != 0) + if ((_bits & 0x200000L) != 0) { - _bits &= ~0x100000L; + _bits &= ~0x200000L; _headers._Expect = default(StringValues); return true; } @@ -5488,9 +5564,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Origin, key)) { - if ((_bits & 0x100000000L) != 0) + if ((_bits & 0x200000000L) != 0) { - _bits &= ~0x100000000L; + _bits &= ~0x200000000L; _headers._Origin = default(StringValues); return true; } @@ -5498,9 +5574,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Pragma, key)) { - if ((_bits & 0x200000000L) != 0) + if ((_bits & 0x400000000L) != 0) { - _bits &= ~0x200000000L; + _bits &= ~0x400000000L; _headers._Pragma = default(StringValues); return true; } @@ -5519,9 +5595,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Cookie.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000L) != 0) + if ((_bits & 0x40000L) != 0) { - _bits &= ~0x20000L; + _bits &= ~0x40000L; _headers._Cookie = default(StringValues); return true; } @@ -5529,9 +5605,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Expect.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100000L) != 0) + if ((_bits & 0x200000L) != 0) { - _bits &= ~0x100000L; + _bits &= ~0x200000L; _headers._Expect = default(StringValues); return true; } @@ -5539,9 +5615,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Origin.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100000000L) != 0) + if ((_bits & 0x200000000L) != 0) { - _bits &= ~0x100000000L; + _bits &= ~0x200000000L; _headers._Origin = default(StringValues); return true; } @@ -5549,9 +5625,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Pragma.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200000000L) != 0) + if ((_bits & 0x400000000L) != 0) { - _bits &= ~0x200000000L; + _bits &= ~0x400000000L; _headers._Pragma = default(StringValues); return true; } @@ -5573,9 +5649,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Scheme, key)) { - if ((_bits & 0x80L) != 0) + if ((_bits & 0x100L) != 0) { - _bits &= ~0x80L; + _bits &= ~0x100L; _headers._Scheme = default(StringValues); return true; } @@ -5583,9 +5659,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Baggage, key)) { - if ((_bits & 0x4000L) != 0) + if ((_bits & 0x8000L) != 0) { - _bits &= ~0x4000L; + _bits &= ~0x8000L; _headers._Baggage = default(StringValues); return true; } @@ -5593,9 +5669,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Referer, key)) { - if ((_bits & 0x1000000000L) != 0) + if ((_bits & 0x2000000000L) != 0) { - _bits &= ~0x1000000000L; + _bits &= ~0x2000000000L; _headers._Referer = default(StringValues); return true; } @@ -5603,9 +5679,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Upgrade, key)) { - if ((_bits & 0x80000000000L) != 0) + if ((_bits & 0x100000000000L) != 0) { - _bits &= ~0x80000000000L; + _bits &= ~0x100000000000L; _headers._Upgrade = default(StringValues); return true; } @@ -5613,9 +5689,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.Warning, key)) { - if ((_bits & 0x400000000000L) != 0) + if ((_bits & 0x800000000000L) != 0) { - _bits &= ~0x400000000000L; + _bits &= ~0x800000000000L; _headers._Warning = default(StringValues); return true; } @@ -5634,9 +5710,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Scheme.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80L) != 0) + if ((_bits & 0x100L) != 0) { - _bits &= ~0x80L; + _bits &= ~0x100L; _headers._Scheme = default(StringValues); return true; } @@ -5644,9 +5720,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Baggage.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x4000L) != 0) + if ((_bits & 0x8000L) != 0) { - _bits &= ~0x4000L; + _bits &= ~0x8000L; _headers._Baggage = default(StringValues); return true; } @@ -5654,9 +5730,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Referer.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x1000000000L) != 0) + if ((_bits & 0x2000000000L) != 0) { - _bits &= ~0x1000000000L; + _bits &= ~0x2000000000L; _headers._Referer = default(StringValues); return true; } @@ -5664,9 +5740,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Upgrade.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000000000L) != 0) + if ((_bits & 0x100000000000L) != 0) { - _bits &= ~0x80000000000L; + _bits &= ~0x100000000000L; _headers._Upgrade = default(StringValues); return true; } @@ -5674,9 +5750,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.Warning.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400000000000L) != 0) + if ((_bits & 0x800000000000L) != 0) { - _bits &= ~0x400000000000L; + _bits &= ~0x800000000000L; _headers._Warning = default(StringValues); return true; } @@ -5688,9 +5764,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.IfMatch, key)) { - if ((_bits & 0x2000000L) != 0) + if ((_bits & 0x4000000L) != 0) { - _bits &= ~0x2000000L; + _bits &= ~0x4000000L; _headers._IfMatch = default(StringValues); return true; } @@ -5698,9 +5774,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.IfRange, key)) { - if ((_bits & 0x10000000L) != 0) + if ((_bits & 0x20000000L) != 0) { - _bits &= ~0x10000000L; + _bits &= ~0x20000000L; _headers._IfRange = default(StringValues); return true; } @@ -5709,9 +5785,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.IfMatch.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x2000000L) != 0) + if ((_bits & 0x4000000L) != 0) { - _bits &= ~0x2000000L; + _bits &= ~0x4000000L; _headers._IfMatch = default(StringValues); return true; } @@ -5719,9 +5795,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.IfRange.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x10000000L) != 0) + if ((_bits & 0x20000000L) != 0) { - _bits &= ~0x10000000L; + _bits &= ~0x20000000L; _headers._IfRange = default(StringValues); return true; } @@ -5731,22 +5807,42 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } case 9: { + if (ReferenceEquals(HeaderNames.Protocol, key)) + { + if ((_bits & 0x80L) != 0) + { + _bits &= ~0x80L; + _headers._Protocol = default(StringValues); + return true; + } + return false; + } if (ReferenceEquals(HeaderNames.Translate, key)) { - if ((_bits & 0x40000000000L) != 0) + if ((_bits & 0x80000000000L) != 0) { - _bits &= ~0x40000000000L; + _bits &= ~0x80000000000L; _headers._Translate = default(StringValues); return true; } return false; } + if (HeaderNames.Protocol.Equals(key, StringComparison.OrdinalIgnoreCase)) + { + if ((_bits & 0x80L) != 0) + { + _bits &= ~0x80L; + _headers._Protocol = default(StringValues); + return true; + } + return false; + } if (HeaderNames.Translate.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000000000L) != 0) + if ((_bits & 0x80000000000L) != 0) { - _bits &= ~0x40000000000L; + _bits &= ~0x80000000000L; _headers._Translate = default(StringValues); return true; } @@ -5788,9 +5884,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.KeepAlive, key)) { - if ((_bits & 0x40000000L) != 0) + if ((_bits & 0x80000000L) != 0) { - _bits &= ~0x40000000L; + _bits &= ~0x80000000L; _headers._KeepAlive = default(StringValues); return true; } @@ -5798,9 +5894,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.RequestId, key)) { - if ((_bits & 0x2000000000L) != 0) + if ((_bits & 0x4000000000L) != 0) { - _bits &= ~0x2000000000L; + _bits &= ~0x4000000000L; _headers._RequestId = default(StringValues); return true; } @@ -5808,9 +5904,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.TraceState, key)) { - if ((_bits & 0x10000000000L) != 0) + if ((_bits & 0x20000000000L) != 0) { - _bits &= ~0x10000000000L; + _bits &= ~0x20000000000L; _headers._TraceState = default(StringValues); return true; } @@ -5849,9 +5945,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.KeepAlive.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000000L) != 0) + if ((_bits & 0x80000000L) != 0) { - _bits &= ~0x40000000L; + _bits &= ~0x80000000L; _headers._KeepAlive = default(StringValues); return true; } @@ -5859,9 +5955,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.RequestId.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x2000000000L) != 0) + if ((_bits & 0x4000000000L) != 0) { - _bits &= ~0x2000000000L; + _bits &= ~0x4000000000L; _headers._RequestId = default(StringValues); return true; } @@ -5869,9 +5965,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.TraceState.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x10000000000L) != 0) + if ((_bits & 0x20000000000L) != 0) { - _bits &= ~0x10000000000L; + _bits &= ~0x20000000000L; _headers._TraceState = default(StringValues); return true; } @@ -5883,9 +5979,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.TraceParent, key)) { - if ((_bits & 0x8000000000L) != 0) + if ((_bits & 0x10000000000L) != 0) { - _bits &= ~0x8000000000L; + _bits &= ~0x10000000000L; _headers._TraceParent = default(StringValues); return true; } @@ -5894,9 +5990,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.TraceParent.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x8000000000L) != 0) + if ((_bits & 0x10000000000L) != 0) { - _bits &= ~0x8000000000L; + _bits &= ~0x10000000000L; _headers._TraceParent = default(StringValues); return true; } @@ -5908,9 +6004,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.ContentType, key)) { - if ((_bits & 0x10000L) != 0) + if ((_bits & 0x20000L) != 0) { - _bits &= ~0x10000L; + _bits &= ~0x20000L; _headers._ContentType = default(StringValues); return true; } @@ -5918,9 +6014,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.GrpcTimeout, key)) { - if ((_bits & 0x1000000L) != 0) + if ((_bits & 0x2000000L) != 0) { - _bits &= ~0x1000000L; + _bits &= ~0x2000000L; _headers._GrpcTimeout = default(StringValues); return true; } @@ -5928,9 +6024,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.MaxForwards, key)) { - if ((_bits & 0x80000000L) != 0) + if ((_bits & 0x100000000L) != 0) { - _bits &= ~0x80000000L; + _bits &= ~0x100000000L; _headers._MaxForwards = default(StringValues); return true; } @@ -5939,9 +6035,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.ContentType.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x10000L) != 0) + if ((_bits & 0x20000L) != 0) { - _bits &= ~0x10000L; + _bits &= ~0x20000L; _headers._ContentType = default(StringValues); return true; } @@ -5949,9 +6045,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.GrpcTimeout.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x1000000L) != 0) + if ((_bits & 0x2000000L) != 0) { - _bits &= ~0x1000000L; + _bits &= ~0x2000000L; _headers._GrpcTimeout = default(StringValues); return true; } @@ -5959,9 +6055,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.MaxForwards.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000000L) != 0) + if ((_bits & 0x100000000L) != 0) { - _bits &= ~0x80000000L; + _bits &= ~0x100000000L; _headers._MaxForwards = default(StringValues); return true; } @@ -5973,9 +6069,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.Authorization, key)) { - if ((_bits & 0x2000L) != 0) + if ((_bits & 0x4000L) != 0) { - _bits &= ~0x2000L; + _bits &= ~0x4000L; _headers._Authorization = default(StringValues); return true; } @@ -5983,9 +6079,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.CacheControl, key)) { - if ((_bits & 0x8000L) != 0) + if ((_bits & 0x10000L) != 0) { - _bits &= ~0x8000L; + _bits &= ~0x10000L; _headers._CacheControl = default(StringValues); return true; } @@ -5993,9 +6089,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.GrpcEncoding, key)) { - if ((_bits & 0x800000L) != 0) + if ((_bits & 0x1000000L) != 0) { - _bits &= ~0x800000L; + _bits &= ~0x1000000L; _headers._GrpcEncoding = default(StringValues); return true; } @@ -6003,9 +6099,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.IfNoneMatch, key)) { - if ((_bits & 0x8000000L) != 0) + if ((_bits & 0x10000000L) != 0) { - _bits &= ~0x8000000L; + _bits &= ~0x10000000L; _headers._IfNoneMatch = default(StringValues); return true; } @@ -6014,9 +6110,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.Authorization.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x2000L) != 0) + if ((_bits & 0x4000L) != 0) { - _bits &= ~0x2000L; + _bits &= ~0x4000L; _headers._Authorization = default(StringValues); return true; } @@ -6024,9 +6120,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.CacheControl.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x8000L) != 0) + if ((_bits & 0x10000L) != 0) { - _bits &= ~0x8000L; + _bits &= ~0x10000L; _headers._CacheControl = default(StringValues); return true; } @@ -6034,9 +6130,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.GrpcEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x800000L) != 0) + if ((_bits & 0x1000000L) != 0) { - _bits &= ~0x800000L; + _bits &= ~0x1000000L; _headers._GrpcEncoding = default(StringValues); return true; } @@ -6044,9 +6140,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.IfNoneMatch.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x8000000L) != 0) + if ((_bits & 0x10000000L) != 0) { - _bits &= ~0x8000000L; + _bits &= ~0x10000000L; _headers._IfNoneMatch = default(StringValues); return true; } @@ -6058,9 +6154,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AcceptCharset, key)) { - if ((_bits & 0x100L) != 0) + if ((_bits & 0x200L) != 0) { - _bits &= ~0x100L; + _bits &= ~0x200L; _headers._AcceptCharset = default(StringValues); return true; } @@ -6078,9 +6174,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AcceptCharset.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100L) != 0) + if ((_bits & 0x200L) != 0) { - _bits &= ~0x100L; + _bits &= ~0x200L; _headers._AcceptCharset = default(StringValues); return true; } @@ -6101,9 +6197,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AcceptEncoding, key)) { - if ((_bits & 0x200L) != 0) + if ((_bits & 0x400L) != 0) { - _bits &= ~0x200L; + _bits &= ~0x400L; _headers._AcceptEncoding = default(StringValues); return true; } @@ -6111,9 +6207,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.AcceptLanguage, key)) { - if ((_bits & 0x400L) != 0) + if ((_bits & 0x800L) != 0) { - _bits &= ~0x400L; + _bits &= ~0x800L; _headers._AcceptLanguage = default(StringValues); return true; } @@ -6122,9 +6218,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AcceptEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x200L) != 0) + if ((_bits & 0x400L) != 0) { - _bits &= ~0x200L; + _bits &= ~0x400L; _headers._AcceptEncoding = default(StringValues); return true; } @@ -6132,9 +6228,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.AcceptLanguage.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400L) != 0) + if ((_bits & 0x800L) != 0) { - _bits &= ~0x400L; + _bits &= ~0x800L; _headers._AcceptLanguage = default(StringValues); return true; } @@ -6146,9 +6242,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.IfModifiedSince, key)) { - if ((_bits & 0x4000000L) != 0) + if ((_bits & 0x8000000L) != 0) { - _bits &= ~0x4000000L; + _bits &= ~0x8000000L; _headers._IfModifiedSince = default(StringValues); return true; } @@ -6156,9 +6252,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.TransferEncoding, key)) { - if ((_bits & 0x20000000000L) != 0) + if ((_bits & 0x40000000000L) != 0) { - _bits &= ~0x20000000000L; + _bits &= ~0x40000000000L; _headers._TransferEncoding = default(StringValues); return true; } @@ -6167,9 +6263,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.IfModifiedSince.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x4000000L) != 0) + if ((_bits & 0x8000000L) != 0) { - _bits &= ~0x4000000L; + _bits &= ~0x8000000L; _headers._IfModifiedSince = default(StringValues); return true; } @@ -6177,9 +6273,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.TransferEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000000000L) != 0) + if ((_bits & 0x40000000000L) != 0) { - _bits &= ~0x20000000000L; + _bits &= ~0x40000000000L; _headers._TransferEncoding = default(StringValues); return true; } @@ -6191,9 +6287,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.CorrelationContext, key)) { - if ((_bits & 0x40000L) != 0) + if ((_bits & 0x80000L) != 0) { - _bits &= ~0x40000L; + _bits &= ~0x80000L; _headers._CorrelationContext = default(StringValues); return true; } @@ -6201,9 +6297,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.IfUnmodifiedSince, key)) { - if ((_bits & 0x20000000L) != 0) + if ((_bits & 0x40000000L) != 0) { - _bits &= ~0x20000000L; + _bits &= ~0x40000000L; _headers._IfUnmodifiedSince = default(StringValues); return true; } @@ -6211,9 +6307,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (ReferenceEquals(HeaderNames.ProxyAuthorization, key)) { - if ((_bits & 0x400000000L) != 0) + if ((_bits & 0x800000000L) != 0) { - _bits &= ~0x400000000L; + _bits &= ~0x800000000L; _headers._ProxyAuthorization = default(StringValues); return true; } @@ -6222,9 +6318,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.CorrelationContext.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000L) != 0) + if ((_bits & 0x80000L) != 0) { - _bits &= ~0x40000L; + _bits &= ~0x80000L; _headers._CorrelationContext = default(StringValues); return true; } @@ -6232,9 +6328,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.IfUnmodifiedSince.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000000L) != 0) + if ((_bits & 0x40000000L) != 0) { - _bits &= ~0x20000000L; + _bits &= ~0x40000000L; _headers._IfUnmodifiedSince = default(StringValues); return true; } @@ -6242,9 +6338,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } if (HeaderNames.ProxyAuthorization.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400000000L) != 0) + if ((_bits & 0x800000000L) != 0) { - _bits &= ~0x400000000L; + _bits &= ~0x800000000L; _headers._ProxyAuthorization = default(StringValues); return true; } @@ -6256,9 +6352,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.GrpcAcceptEncoding, key)) { - if ((_bits & 0x400000L) != 0) + if ((_bits & 0x800000L) != 0) { - _bits &= ~0x400000L; + _bits &= ~0x800000L; _headers._GrpcAcceptEncoding = default(StringValues); return true; } @@ -6267,9 +6363,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.GrpcAcceptEncoding.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x400000L) != 0) + if ((_bits & 0x800000L) != 0) { - _bits &= ~0x400000L; + _bits &= ~0x800000L; _headers._GrpcAcceptEncoding = default(StringValues); return true; } @@ -6281,9 +6377,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.UpgradeInsecureRequests, key)) { - if ((_bits & 0x100000000000L) != 0) + if ((_bits & 0x200000000000L) != 0) { - _bits &= ~0x100000000000L; + _bits &= ~0x200000000000L; _headers._UpgradeInsecureRequests = default(StringValues); return true; } @@ -6292,9 +6388,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.UpgradeInsecureRequests.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x100000000000L) != 0) + if ((_bits & 0x200000000000L) != 0) { - _bits &= ~0x100000000000L; + _bits &= ~0x200000000000L; _headers._UpgradeInsecureRequests = default(StringValues); return true; } @@ -6306,9 +6402,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AccessControlRequestMethod, key)) { - if ((_bits & 0x1000L) != 0) + if ((_bits & 0x2000L) != 0) { - _bits &= ~0x1000L; + _bits &= ~0x2000L; _headers._AccessControlRequestMethod = default(StringValues); return true; } @@ -6317,9 +6413,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AccessControlRequestMethod.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x1000L) != 0) + if ((_bits & 0x2000L) != 0) { - _bits &= ~0x1000L; + _bits &= ~0x2000L; _headers._AccessControlRequestMethod = default(StringValues); return true; } @@ -6331,9 +6427,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { if (ReferenceEquals(HeaderNames.AccessControlRequestHeaders, key)) { - if ((_bits & 0x800L) != 0) + if ((_bits & 0x1000L) != 0) { - _bits &= ~0x800L; + _bits &= ~0x1000L; _headers._AccessControlRequestHeaders = default(StringValues); return true; } @@ -6342,9 +6438,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if (HeaderNames.AccessControlRequestHeaders.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x800L) != 0) + if ((_bits & 0x1000L) != 0) { - _bits &= ~0x800L; + _bits &= ~0x1000L; _headers._AccessControlRequestHeaders = default(StringValues); return true; } @@ -6432,7 +6528,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x80L) != 0) { - _headers._Scheme = default; + _headers._Protocol = default; if((tempBits & ~0x80L) == 0) { return; @@ -6442,7 +6538,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x100L) != 0) { - _headers._AcceptCharset = default; + _headers._Scheme = default; if((tempBits & ~0x100L) == 0) { return; @@ -6452,7 +6548,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x200L) != 0) { - _headers._AcceptEncoding = default; + _headers._AcceptCharset = default; if((tempBits & ~0x200L) == 0) { return; @@ -6462,7 +6558,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x400L) != 0) { - _headers._AcceptLanguage = default; + _headers._AcceptEncoding = default; if((tempBits & ~0x400L) == 0) { return; @@ -6472,7 +6568,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x800L) != 0) { - _headers._AccessControlRequestHeaders = default; + _headers._AcceptLanguage = default; if((tempBits & ~0x800L) == 0) { return; @@ -6482,7 +6578,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x1000L) != 0) { - _headers._AccessControlRequestMethod = default; + _headers._AccessControlRequestHeaders = default; if((tempBits & ~0x1000L) == 0) { return; @@ -6492,7 +6588,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x2000L) != 0) { - _headers._Authorization = default; + _headers._AccessControlRequestMethod = default; if((tempBits & ~0x2000L) == 0) { return; @@ -6502,7 +6598,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x4000L) != 0) { - _headers._Baggage = default; + _headers._Authorization = default; if((tempBits & ~0x4000L) == 0) { return; @@ -6512,7 +6608,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x8000L) != 0) { - _headers._CacheControl = default; + _headers._Baggage = default; if((tempBits & ~0x8000L) == 0) { return; @@ -6522,7 +6618,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x10000L) != 0) { - _headers._ContentType = default; + _headers._CacheControl = default; if((tempBits & ~0x10000L) == 0) { return; @@ -6532,7 +6628,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x20000L) != 0) { - _headers._Cookie = default; + _headers._ContentType = default; if((tempBits & ~0x20000L) == 0) { return; @@ -6542,7 +6638,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x40000L) != 0) { - _headers._CorrelationContext = default; + _headers._Cookie = default; if((tempBits & ~0x40000L) == 0) { return; @@ -6552,7 +6648,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x80000L) != 0) { - _headers._Date = default; + _headers._CorrelationContext = default; if((tempBits & ~0x80000L) == 0) { return; @@ -6562,7 +6658,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x100000L) != 0) { - _headers._Expect = default; + _headers._Date = default; if((tempBits & ~0x100000L) == 0) { return; @@ -6572,7 +6668,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x200000L) != 0) { - _headers._From = default; + _headers._Expect = default; if((tempBits & ~0x200000L) == 0) { return; @@ -6582,7 +6678,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x400000L) != 0) { - _headers._GrpcAcceptEncoding = default; + _headers._From = default; if((tempBits & ~0x400000L) == 0) { return; @@ -6592,7 +6688,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x800000L) != 0) { - _headers._GrpcEncoding = default; + _headers._GrpcAcceptEncoding = default; if((tempBits & ~0x800000L) == 0) { return; @@ -6602,7 +6698,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x1000000L) != 0) { - _headers._GrpcTimeout = default; + _headers._GrpcEncoding = default; if((tempBits & ~0x1000000L) == 0) { return; @@ -6612,7 +6708,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x2000000L) != 0) { - _headers._IfMatch = default; + _headers._GrpcTimeout = default; if((tempBits & ~0x2000000L) == 0) { return; @@ -6622,7 +6718,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x4000000L) != 0) { - _headers._IfModifiedSince = default; + _headers._IfMatch = default; if((tempBits & ~0x4000000L) == 0) { return; @@ -6632,7 +6728,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x8000000L) != 0) { - _headers._IfNoneMatch = default; + _headers._IfModifiedSince = default; if((tempBits & ~0x8000000L) == 0) { return; @@ -6642,7 +6738,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x10000000L) != 0) { - _headers._IfRange = default; + _headers._IfNoneMatch = default; if((tempBits & ~0x10000000L) == 0) { return; @@ -6652,7 +6748,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x20000000L) != 0) { - _headers._IfUnmodifiedSince = default; + _headers._IfRange = default; if((tempBits & ~0x20000000L) == 0) { return; @@ -6662,7 +6758,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x40000000L) != 0) { - _headers._KeepAlive = default; + _headers._IfUnmodifiedSince = default; if((tempBits & ~0x40000000L) == 0) { return; @@ -6672,7 +6768,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x80000000L) != 0) { - _headers._MaxForwards = default; + _headers._KeepAlive = default; if((tempBits & ~0x80000000L) == 0) { return; @@ -6682,7 +6778,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x100000000L) != 0) { - _headers._Origin = default; + _headers._MaxForwards = default; if((tempBits & ~0x100000000L) == 0) { return; @@ -6692,7 +6788,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x200000000L) != 0) { - _headers._Pragma = default; + _headers._Origin = default; if((tempBits & ~0x200000000L) == 0) { return; @@ -6702,7 +6798,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x400000000L) != 0) { - _headers._ProxyAuthorization = default; + _headers._Pragma = default; if((tempBits & ~0x400000000L) == 0) { return; @@ -6712,7 +6808,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x800000000L) != 0) { - _headers._Range = default; + _headers._ProxyAuthorization = default; if((tempBits & ~0x800000000L) == 0) { return; @@ -6722,7 +6818,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x1000000000L) != 0) { - _headers._Referer = default; + _headers._Range = default; if((tempBits & ~0x1000000000L) == 0) { return; @@ -6732,7 +6828,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x2000000000L) != 0) { - _headers._RequestId = default; + _headers._Referer = default; if((tempBits & ~0x2000000000L) == 0) { return; @@ -6742,7 +6838,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x4000000000L) != 0) { - _headers._TE = default; + _headers._RequestId = default; if((tempBits & ~0x4000000000L) == 0) { return; @@ -6752,7 +6848,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x8000000000L) != 0) { - _headers._TraceParent = default; + _headers._TE = default; if((tempBits & ~0x8000000000L) == 0) { return; @@ -6762,7 +6858,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x10000000000L) != 0) { - _headers._TraceState = default; + _headers._TraceParent = default; if((tempBits & ~0x10000000000L) == 0) { return; @@ -6772,7 +6868,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x20000000000L) != 0) { - _headers._TransferEncoding = default; + _headers._TraceState = default; if((tempBits & ~0x20000000000L) == 0) { return; @@ -6782,7 +6878,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x40000000000L) != 0) { - _headers._Translate = default; + _headers._TransferEncoding = default; if((tempBits & ~0x40000000000L) == 0) { return; @@ -6792,7 +6888,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x80000000000L) != 0) { - _headers._Upgrade = default; + _headers._Translate = default; if((tempBits & ~0x80000000000L) == 0) { return; @@ -6802,7 +6898,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x100000000000L) != 0) { - _headers._UpgradeInsecureRequests = default; + _headers._Upgrade = default; if((tempBits & ~0x100000000000L) == 0) { return; @@ -6812,7 +6908,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x200000000000L) != 0) { - _headers._Via = default; + _headers._UpgradeInsecureRequests = default; if((tempBits & ~0x200000000000L) == 0) { return; @@ -6822,7 +6918,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http if ((tempBits & 0x400000000000L) != 0) { - _headers._Warning = default; + _headers._Via = default; if((tempBits & ~0x400000000000L) == 0) { return; @@ -6830,6 +6926,16 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http tempBits &= ~0x400000000000L; } + if ((tempBits & 0x800000000000L) != 0) + { + _headers._Warning = default; + if((tempBits & ~0x800000000000L) == 0) + { + return; + } + tempBits &= ~0x800000000000L; + } + } protected override bool CopyToFast(KeyValuePair[] array, int arrayIndex) @@ -6908,7 +7014,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Scheme, _headers._Scheme); + array[arrayIndex] = new KeyValuePair(HeaderNames.Protocol, _headers._Protocol); ++arrayIndex; } if ((_bits & 0x100L) != 0) @@ -6917,7 +7023,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.AcceptCharset, _headers._AcceptCharset); + array[arrayIndex] = new KeyValuePair(HeaderNames.Scheme, _headers._Scheme); ++arrayIndex; } if ((_bits & 0x200L) != 0) @@ -6926,7 +7032,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.AcceptEncoding, _headers._AcceptEncoding); + array[arrayIndex] = new KeyValuePair(HeaderNames.AcceptCharset, _headers._AcceptCharset); ++arrayIndex; } if ((_bits & 0x400L) != 0) @@ -6935,7 +7041,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.AcceptLanguage, _headers._AcceptLanguage); + array[arrayIndex] = new KeyValuePair(HeaderNames.AcceptEncoding, _headers._AcceptEncoding); ++arrayIndex; } if ((_bits & 0x800L) != 0) @@ -6944,7 +7050,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.AccessControlRequestHeaders, _headers._AccessControlRequestHeaders); + array[arrayIndex] = new KeyValuePair(HeaderNames.AcceptLanguage, _headers._AcceptLanguage); ++arrayIndex; } if ((_bits & 0x1000L) != 0) @@ -6953,7 +7059,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.AccessControlRequestMethod, _headers._AccessControlRequestMethod); + array[arrayIndex] = new KeyValuePair(HeaderNames.AccessControlRequestHeaders, _headers._AccessControlRequestHeaders); ++arrayIndex; } if ((_bits & 0x2000L) != 0) @@ -6962,7 +7068,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Authorization, _headers._Authorization); + array[arrayIndex] = new KeyValuePair(HeaderNames.AccessControlRequestMethod, _headers._AccessControlRequestMethod); ++arrayIndex; } if ((_bits & 0x4000L) != 0) @@ -6971,7 +7077,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Baggage, _headers._Baggage); + array[arrayIndex] = new KeyValuePair(HeaderNames.Authorization, _headers._Authorization); ++arrayIndex; } if ((_bits & 0x8000L) != 0) @@ -6980,7 +7086,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.CacheControl, _headers._CacheControl); + array[arrayIndex] = new KeyValuePair(HeaderNames.Baggage, _headers._Baggage); ++arrayIndex; } if ((_bits & 0x10000L) != 0) @@ -6989,7 +7095,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.ContentType, _headers._ContentType); + array[arrayIndex] = new KeyValuePair(HeaderNames.CacheControl, _headers._CacheControl); ++arrayIndex; } if ((_bits & 0x20000L) != 0) @@ -6998,7 +7104,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Cookie, _headers._Cookie); + array[arrayIndex] = new KeyValuePair(HeaderNames.ContentType, _headers._ContentType); ++arrayIndex; } if ((_bits & 0x40000L) != 0) @@ -7007,7 +7113,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.CorrelationContext, _headers._CorrelationContext); + array[arrayIndex] = new KeyValuePair(HeaderNames.Cookie, _headers._Cookie); ++arrayIndex; } if ((_bits & 0x80000L) != 0) @@ -7016,7 +7122,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Date, _headers._Date); + array[arrayIndex] = new KeyValuePair(HeaderNames.CorrelationContext, _headers._CorrelationContext); ++arrayIndex; } if ((_bits & 0x100000L) != 0) @@ -7025,7 +7131,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Expect, _headers._Expect); + array[arrayIndex] = new KeyValuePair(HeaderNames.Date, _headers._Date); ++arrayIndex; } if ((_bits & 0x200000L) != 0) @@ -7034,7 +7140,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.From, _headers._From); + array[arrayIndex] = new KeyValuePair(HeaderNames.Expect, _headers._Expect); ++arrayIndex; } if ((_bits & 0x400000L) != 0) @@ -7043,7 +7149,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.GrpcAcceptEncoding, _headers._GrpcAcceptEncoding); + array[arrayIndex] = new KeyValuePair(HeaderNames.From, _headers._From); ++arrayIndex; } if ((_bits & 0x800000L) != 0) @@ -7052,7 +7158,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.GrpcEncoding, _headers._GrpcEncoding); + array[arrayIndex] = new KeyValuePair(HeaderNames.GrpcAcceptEncoding, _headers._GrpcAcceptEncoding); ++arrayIndex; } if ((_bits & 0x1000000L) != 0) @@ -7061,7 +7167,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.GrpcTimeout, _headers._GrpcTimeout); + array[arrayIndex] = new KeyValuePair(HeaderNames.GrpcEncoding, _headers._GrpcEncoding); ++arrayIndex; } if ((_bits & 0x2000000L) != 0) @@ -7070,7 +7176,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.IfMatch, _headers._IfMatch); + array[arrayIndex] = new KeyValuePair(HeaderNames.GrpcTimeout, _headers._GrpcTimeout); ++arrayIndex; } if ((_bits & 0x4000000L) != 0) @@ -7079,7 +7185,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.IfModifiedSince, _headers._IfModifiedSince); + array[arrayIndex] = new KeyValuePair(HeaderNames.IfMatch, _headers._IfMatch); ++arrayIndex; } if ((_bits & 0x8000000L) != 0) @@ -7088,7 +7194,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.IfNoneMatch, _headers._IfNoneMatch); + array[arrayIndex] = new KeyValuePair(HeaderNames.IfModifiedSince, _headers._IfModifiedSince); ++arrayIndex; } if ((_bits & 0x10000000L) != 0) @@ -7097,7 +7203,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.IfRange, _headers._IfRange); + array[arrayIndex] = new KeyValuePair(HeaderNames.IfNoneMatch, _headers._IfNoneMatch); ++arrayIndex; } if ((_bits & 0x20000000L) != 0) @@ -7106,7 +7212,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.IfUnmodifiedSince, _headers._IfUnmodifiedSince); + array[arrayIndex] = new KeyValuePair(HeaderNames.IfRange, _headers._IfRange); ++arrayIndex; } if ((_bits & 0x40000000L) != 0) @@ -7115,7 +7221,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.KeepAlive, _headers._KeepAlive); + array[arrayIndex] = new KeyValuePair(HeaderNames.IfUnmodifiedSince, _headers._IfUnmodifiedSince); ++arrayIndex; } if ((_bits & 0x80000000L) != 0) @@ -7124,7 +7230,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.MaxForwards, _headers._MaxForwards); + array[arrayIndex] = new KeyValuePair(HeaderNames.KeepAlive, _headers._KeepAlive); ++arrayIndex; } if ((_bits & 0x100000000L) != 0) @@ -7133,7 +7239,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Origin, _headers._Origin); + array[arrayIndex] = new KeyValuePair(HeaderNames.MaxForwards, _headers._MaxForwards); ++arrayIndex; } if ((_bits & 0x200000000L) != 0) @@ -7142,7 +7248,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Pragma, _headers._Pragma); + array[arrayIndex] = new KeyValuePair(HeaderNames.Origin, _headers._Origin); ++arrayIndex; } if ((_bits & 0x400000000L) != 0) @@ -7151,7 +7257,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.ProxyAuthorization, _headers._ProxyAuthorization); + array[arrayIndex] = new KeyValuePair(HeaderNames.Pragma, _headers._Pragma); ++arrayIndex; } if ((_bits & 0x800000000L) != 0) @@ -7160,7 +7266,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Range, _headers._Range); + array[arrayIndex] = new KeyValuePair(HeaderNames.ProxyAuthorization, _headers._ProxyAuthorization); ++arrayIndex; } if ((_bits & 0x1000000000L) != 0) @@ -7169,7 +7275,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Referer, _headers._Referer); + array[arrayIndex] = new KeyValuePair(HeaderNames.Range, _headers._Range); ++arrayIndex; } if ((_bits & 0x2000000000L) != 0) @@ -7178,7 +7284,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.RequestId, _headers._RequestId); + array[arrayIndex] = new KeyValuePair(HeaderNames.Referer, _headers._Referer); ++arrayIndex; } if ((_bits & 0x4000000000L) != 0) @@ -7187,7 +7293,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.TE, _headers._TE); + array[arrayIndex] = new KeyValuePair(HeaderNames.RequestId, _headers._RequestId); ++arrayIndex; } if ((_bits & 0x8000000000L) != 0) @@ -7196,7 +7302,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.TraceParent, _headers._TraceParent); + array[arrayIndex] = new KeyValuePair(HeaderNames.TE, _headers._TE); ++arrayIndex; } if ((_bits & 0x10000000000L) != 0) @@ -7205,7 +7311,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.TraceState, _headers._TraceState); + array[arrayIndex] = new KeyValuePair(HeaderNames.TraceParent, _headers._TraceParent); ++arrayIndex; } if ((_bits & 0x20000000000L) != 0) @@ -7214,7 +7320,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.TransferEncoding, _headers._TransferEncoding); + array[arrayIndex] = new KeyValuePair(HeaderNames.TraceState, _headers._TraceState); ++arrayIndex; } if ((_bits & 0x40000000000L) != 0) @@ -7223,7 +7329,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Translate, _headers._Translate); + array[arrayIndex] = new KeyValuePair(HeaderNames.TransferEncoding, _headers._TransferEncoding); ++arrayIndex; } if ((_bits & 0x80000000000L) != 0) @@ -7232,7 +7338,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Upgrade, _headers._Upgrade); + array[arrayIndex] = new KeyValuePair(HeaderNames.Translate, _headers._Translate); ++arrayIndex; } if ((_bits & 0x100000000000L) != 0) @@ -7241,7 +7347,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.UpgradeInsecureRequests, _headers._UpgradeInsecureRequests); + array[arrayIndex] = new KeyValuePair(HeaderNames.Upgrade, _headers._Upgrade); ++arrayIndex; } if ((_bits & 0x200000000000L) != 0) @@ -7250,10 +7356,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Via, _headers._Via); + array[arrayIndex] = new KeyValuePair(HeaderNames.UpgradeInsecureRequests, _headers._UpgradeInsecureRequests); ++arrayIndex; } if ((_bits & 0x400000000000L) != 0) + { + if (arrayIndex == array.Length) + { + return false; + } + array[arrayIndex] = new KeyValuePair(HeaderNames.Via, _headers._Via); + ++arrayIndex; + } + if ((_bits & 0x800000000000L) != 0) { if (arrayIndex == array.Length) { @@ -7278,8 +7393,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http internal void ClearPseudoRequestHeaders() { - _pseudoBits = _bits & 240; - _bits &= ~240; + _pseudoBits = _bits & 496; + _bits &= ~496; } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -7326,7 +7441,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 2: if (((ReadUnalignedLittleEndian_ushort(ref nameStart) & 0xdfdfu) == 0x4554u)) { - flag = 0x4000000000L; + flag = 0x8000000000L; values = ref _headers._TE; nameStr = HeaderNames.TE; } @@ -7334,7 +7449,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 3: if (((ReadUnalignedLittleEndian_ushort(ref nameStart) & 0xdfdfu) == 0x4956u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)2) & 0xdfu) == 0x41u)) { - flag = 0x200000000000L; + flag = 0x400000000000L; values = ref _headers._Via; nameStr = HeaderNames.Via; } @@ -7349,13 +7464,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } else if ((firstTerm4 == 0x45544144u)) { - flag = 0x80000L; + flag = 0x100000L; values = ref _headers._Date; nameStr = HeaderNames.Date; } else if ((firstTerm4 == 0x4d4f5246u)) { - flag = 0x200000L; + flag = 0x400000L; values = ref _headers._From; nameStr = HeaderNames.From; } @@ -7369,7 +7484,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } else if (((ReadUnalignedLittleEndian_uint(ref nameStart) & 0xdfdfdfdfu) == 0x474e4152u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)4) & 0xdfu) == 0x45u)) { - flag = 0x800000000L; + flag = 0x1000000000L; values = ref _headers._Range; nameStr = HeaderNames.Range; } @@ -7384,25 +7499,25 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } else if ((firstTerm6 == 0x4b4f4f43u) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x4549u)) { - flag = 0x20000L; + flag = 0x40000L; values = ref _headers._Cookie; nameStr = HeaderNames.Cookie; } else if ((firstTerm6 == 0x45505845u) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x5443u)) { - flag = 0x100000L; + flag = 0x200000L; values = ref _headers._Expect; nameStr = HeaderNames.Expect; } else if ((firstTerm6 == 0x4749524fu) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x4e49u)) { - flag = 0x100000000L; + flag = 0x200000000L; values = ref _headers._Origin; nameStr = HeaderNames.Origin; } else if ((firstTerm6 == 0x47415250u) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x414du)) { - flag = 0x200000000L; + flag = 0x400000000L; values = ref _headers._Pragma; nameStr = HeaderNames.Pragma; } @@ -7416,31 +7531,31 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } else if (((ReadUnalignedLittleEndian_uint(ref nameStart) & 0xdfdfdfffu) == 0x4843533au) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x4d45u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)6) & 0xdfu) == 0x45u)) { - flag = 0x80L; + flag = 0x100L; values = ref _headers._Scheme; nameStr = HeaderNames.Scheme; } else if (((ReadUnalignedLittleEndian_uint(ref nameStart) & 0xdfdfdfdfu) == 0x47474142u) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x4741u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)6) & 0xdfu) == 0x45u)) { - flag = 0x4000L; + flag = 0x8000L; values = ref _headers._Baggage; nameStr = HeaderNames.Baggage; } else if (((ReadUnalignedLittleEndian_uint(ref nameStart) & 0xdfdfdfdfu) == 0x45464552u) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x4552u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)6) & 0xdfu) == 0x52u)) { - flag = 0x1000000000L; + flag = 0x2000000000L; values = ref _headers._Referer; nameStr = HeaderNames.Referer; } else if (((ReadUnalignedLittleEndian_uint(ref nameStart) & 0xdfdfdfdfu) == 0x52475055u) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x4441u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)6) & 0xdfu) == 0x45u)) { - flag = 0x80000000000L; + flag = 0x100000000000L; values = ref _headers._Upgrade; nameStr = HeaderNames.Upgrade; } else if (((ReadUnalignedLittleEndian_uint(ref nameStart) & 0xdfdfdfdfu) == 0x4e524157u) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x4e49u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)6) & 0xdfu) == 0x47u)) { - flag = 0x400000000000L; + flag = 0x800000000000L; values = ref _headers._Warning; nameStr = HeaderNames.Warning; } @@ -7449,21 +7564,27 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http var firstTerm8 = (ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfffdfdfuL); if ((firstTerm8 == 0x484354414d2d4649uL)) { - flag = 0x2000000L; + flag = 0x4000000L; values = ref _headers._IfMatch; nameStr = HeaderNames.IfMatch; } else if ((firstTerm8 == 0x45474e41522d4649uL)) { - flag = 0x10000000L; + flag = 0x20000000L; values = ref _headers._IfRange; nameStr = HeaderNames.IfRange; } break; case 9: - if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfdfdfdfuL) == 0x54414c534e415254uL) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)8) & 0xdfu) == 0x45u)) + if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfdfdfffuL) == 0x4f434f544f52503auL) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)8) & 0xdfu) == 0x4cu)) { - flag = 0x40000000000L; + flag = 0x80L; + values = ref _headers._Protocol; + nameStr = HeaderNames.Protocol; + } + else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfdfdfdfuL) == 0x54414c534e415254uL) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)8) & 0xdfu) == 0x45u)) + { + flag = 0x80000000000L; values = ref _headers._Translate; nameStr = HeaderNames.Translate; } @@ -7489,19 +7610,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfffdfdfdfdfuL) == 0x494c412d5045454buL) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(4 * sizeof(ushort)))) & 0xdfdfu) == 0x4556u)) { - flag = 0x40000000L; + flag = 0x80000000L; values = ref _headers._KeepAlive; nameStr = HeaderNames.KeepAlive; } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xffdfdfdfdfdfdfdfuL) == 0x2d54534555514552uL) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(4 * sizeof(ushort)))) & 0xdfdfu) == 0x4449u)) { - flag = 0x2000000000L; + flag = 0x4000000000L; values = ref _headers._RequestId; nameStr = HeaderNames.RequestId; } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfdfdfdfuL) == 0x4154534543415254uL) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(4 * sizeof(ushort)))) & 0xdfdfu) == 0x4554u)) { - flag = 0x10000000000L; + flag = 0x20000000000L; values = ref _headers._TraceState; nameStr = HeaderNames.TraceState; } @@ -7509,7 +7630,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 11: if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfdfdfdfuL) == 0x5241504543415254uL) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(4 * sizeof(ushort)))) & 0xdfdfu) == 0x4e45u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)10) & 0xdfu) == 0x54u)) { - flag = 0x8000000000L; + flag = 0x10000000000L; values = ref _headers._TraceParent; nameStr = HeaderNames.TraceParent; } @@ -7517,19 +7638,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 12: if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xffdfdfdfdfdfdfdfuL) == 0x2d544e45544e4f43uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x45505954u)) { - flag = 0x10000L; + flag = 0x20000L; values = ref _headers._ContentType; nameStr = HeaderNames.ContentType; } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfffdfdfdfdfuL) == 0x4d49542d43505247uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x54554f45u)) { - flag = 0x1000000L; + flag = 0x2000000L; values = ref _headers._GrpcTimeout; nameStr = HeaderNames.GrpcTimeout; } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfffdfdfdfuL) == 0x57524f462d58414duL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x53445241u)) { - flag = 0x80000000L; + flag = 0x100000000L; values = ref _headers._MaxForwards; nameStr = HeaderNames.MaxForwards; } @@ -7537,25 +7658,25 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 13: if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfdfdfdfuL) == 0x5a49524f48545541uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x4f495441u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)12) & 0xdfu) == 0x4eu)) { - flag = 0x2000L; + flag = 0x4000L; values = ref _headers._Authorization; nameStr = HeaderNames.Authorization; } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfffdfdfdfdfdfuL) == 0x4f432d4548434143uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x4f52544eu) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)12) & 0xdfu) == 0x4cu)) { - flag = 0x8000L; + flag = 0x10000L; values = ref _headers._CacheControl; nameStr = HeaderNames.CacheControl; } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfffdfdfdfdfuL) == 0x434e452d43505247uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x4e49444fu) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)12) & 0xdfu) == 0x47u)) { - flag = 0x800000L; + flag = 0x1000000L; values = ref _headers._GrpcEncoding; nameStr = HeaderNames.GrpcEncoding; } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xffdfdfdfdfffdfdfuL) == 0x2d454e4f4e2d4649uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x4354414du) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)12) & 0xdfu) == 0x48u)) { - flag = 0x8000000L; + flag = 0x10000000L; values = ref _headers._IfNoneMatch; nameStr = HeaderNames.IfNoneMatch; } @@ -7563,7 +7684,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 14: if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfffdfdfdfdfdfdfuL) == 0x432d545045434341uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x53524148u) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(6 * sizeof(ushort)))) & 0xdfdfu) == 0x5445u)) { - flag = 0x100L; + flag = 0x200L; values = ref _headers._AcceptCharset; nameStr = HeaderNames.AcceptCharset; } @@ -7586,13 +7707,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http var firstTerm15 = (ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfffdfdfdfdfdfdfuL); if ((firstTerm15 == 0x452d545045434341uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x444f434eu) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(6 * sizeof(ushort)))) & 0xdfdfu) == 0x4e49u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)14) & 0xdfu) == 0x47u)) { - flag = 0x200L; + flag = 0x400L; values = ref _headers._AcceptEncoding; nameStr = HeaderNames.AcceptEncoding; } else if ((firstTerm15 == 0x4c2d545045434341uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x55474e41u) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(6 * sizeof(ushort)))) & 0xdfdfu) == 0x4741u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)14) & 0xdfu) == 0x45u)) { - flag = 0x400L; + flag = 0x800L; values = ref _headers._AcceptLanguage; nameStr = HeaderNames.AcceptLanguage; } @@ -7600,13 +7721,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 17: if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfffdfdfuL) == 0x4649444f4d2d4649uL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfdfdfdfffdfdfdfuL) == 0x434e49532d444549uL) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)16) & 0xdfu) == 0x45u)) { - flag = 0x4000000L; + flag = 0x8000000L; values = ref _headers._IfModifiedSince; nameStr = HeaderNames.IfModifiedSince; } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfdfdfdfuL) == 0x524546534e415254uL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfdfdfdfdfdfdfffuL) == 0x4e49444f434e452duL) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)16) & 0xdfu) == 0x47u)) { - flag = 0x20000000000L; + flag = 0x40000000000L; values = ref _headers._TransferEncoding; nameStr = HeaderNames.TransferEncoding; } @@ -7614,19 +7735,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 19: if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfdfdfdfuL) == 0x54414c4552524f43uL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfdfdfdfffdfdfdfuL) == 0x544e4f432d4e4f49uL) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(8 * sizeof(ushort)))) & 0xdfdfu) == 0x5845u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)18) & 0xdfu) == 0x54u)) { - flag = 0x40000L; + flag = 0x80000L; values = ref _headers._CorrelationContext; nameStr = HeaderNames.CorrelationContext; } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfdfdfffdfdfuL) == 0x444f4d4e552d4649uL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfdfffdfdfdfdfdfuL) == 0x49532d4445494649uL) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(8 * sizeof(ushort)))) & 0xdfdfu) == 0x434eu) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)18) & 0xdfu) == 0x45u)) { - flag = 0x20000000L; + flag = 0x40000000L; values = ref _headers._IfUnmodifiedSince; nameStr = HeaderNames.IfUnmodifiedSince; } else if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfffdfdfdfdfdfuL) == 0x55412d59584f5250uL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfdfdfdfdfdfdfdfuL) == 0x54415a49524f4854uL) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(8 * sizeof(ushort)))) & 0xdfdfu) == 0x4f49u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)18) & 0xdfu) == 0x4eu)) { - flag = 0x400000000L; + flag = 0x800000000L; values = ref _headers._ProxyAuthorization; nameStr = HeaderNames.ProxyAuthorization; } @@ -7634,7 +7755,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 20: if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfdfdfffdfdfdfdfuL) == 0x4343412d43505247uL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfdfdfdfffdfdfdfuL) == 0x4f434e452d545045uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(4 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x474e4944u)) { - flag = 0x400000L; + flag = 0x800000L; values = ref _headers._GrpcAcceptEncoding; nameStr = HeaderNames.GrpcAcceptEncoding; } @@ -7642,7 +7763,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 25: if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xffdfdfdfdfdfdfdfuL) == 0x2d45444152475055uL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfdfdfdfdfdfdfdfuL) == 0x4552554345534e49uL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ulong)))) & 0xdfdfdfdfdfdfdfffuL) == 0x545345555145522duL) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)24) & 0xdfu) == 0x53u)) { - flag = 0x100000000000L; + flag = 0x200000000000L; values = ref _headers._UpgradeInsecureRequests; nameStr = HeaderNames.UpgradeInsecureRequests; } @@ -7650,7 +7771,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 29: if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfffdfdfdfdfdfdfuL) == 0x432d535345434341uL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfffdfdfdfdfdfdfuL) == 0x522d4c4f52544e4fuL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ulong)))) & 0xdfffdfdfdfdfdfdfuL) == 0x4d2d545345555145uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(6 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x4f485445u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)28) & 0xdfu) == 0x44u)) { - flag = 0x1000L; + flag = 0x2000L; values = ref _headers._AccessControlRequestMethod; nameStr = HeaderNames.AccessControlRequestMethod; } @@ -7658,7 +7779,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 30: if (((ReadUnalignedLittleEndian_ulong(ref nameStart) & 0xdfffdfdfdfdfdfdfuL) == 0x432d535345434341uL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfffdfdfdfdfdfdfuL) == 0x522d4c4f52544e4fuL) && ((ReadUnalignedLittleEndian_ulong(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ulong)))) & 0xdfffdfdfdfdfdfdfuL) == 0x482d545345555145uL) && ((ReadUnalignedLittleEndian_uint(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(6 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x45444145u) && ((ReadUnalignedLittleEndian_ushort(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(14 * sizeof(ushort)))) & 0xdfdfu) == 0x5352u)) { - flag = 0x800L; + flag = 0x1000L; values = ref _headers._AccessControlRequestHeaders; nameStr = HeaderNames.AccessControlRequestHeaders; } @@ -7743,22 +7864,22 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http break; case 6: case 7: - flag = 0x80L; + flag = 0x100L; values = ref _headers._Scheme; nameStr = HeaderNames.Scheme; break; case 15: - flag = 0x100L; + flag = 0x200L; values = ref _headers._AcceptCharset; nameStr = HeaderNames.AcceptCharset; break; case 16: - flag = 0x200L; + flag = 0x400L; values = ref _headers._AcceptEncoding; nameStr = HeaderNames.AcceptEncoding; break; case 17: - flag = 0x400L; + flag = 0x800L; values = ref _headers._AcceptLanguage; nameStr = HeaderNames.AcceptLanguage; break; @@ -7768,12 +7889,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http nameStr = HeaderNames.Accept; break; case 23: - flag = 0x2000L; + flag = 0x4000L; values = ref _headers._Authorization; nameStr = HeaderNames.Authorization; break; case 24: - flag = 0x8000L; + flag = 0x10000L; values = ref _headers._CacheControl; nameStr = HeaderNames.CacheControl; break; @@ -7790,27 +7911,27 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } return true; case 31: - flag = 0x10000L; + flag = 0x20000L; values = ref _headers._ContentType; nameStr = HeaderNames.ContentType; break; case 32: - flag = 0x20000L; + flag = 0x40000L; values = ref _headers._Cookie; nameStr = HeaderNames.Cookie; break; case 33: - flag = 0x80000L; + flag = 0x100000L; values = ref _headers._Date; nameStr = HeaderNames.Date; break; case 35: - flag = 0x100000L; + flag = 0x200000L; values = ref _headers._Expect; nameStr = HeaderNames.Expect; break; case 37: - flag = 0x200000L; + flag = 0x400000L; values = ref _headers._From; nameStr = HeaderNames.From; break; @@ -7820,52 +7941,52 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http nameStr = HeaderNames.Host; break; case 39: - flag = 0x2000000L; + flag = 0x4000000L; values = ref _headers._IfMatch; nameStr = HeaderNames.IfMatch; break; case 40: - flag = 0x4000000L; + flag = 0x8000000L; values = ref _headers._IfModifiedSince; nameStr = HeaderNames.IfModifiedSince; break; case 41: - flag = 0x8000000L; + flag = 0x10000000L; values = ref _headers._IfNoneMatch; nameStr = HeaderNames.IfNoneMatch; break; case 42: - flag = 0x10000000L; + flag = 0x20000000L; values = ref _headers._IfRange; nameStr = HeaderNames.IfRange; break; case 43: - flag = 0x20000000L; + flag = 0x40000000L; values = ref _headers._IfUnmodifiedSince; nameStr = HeaderNames.IfUnmodifiedSince; break; case 47: - flag = 0x80000000L; + flag = 0x100000000L; values = ref _headers._MaxForwards; nameStr = HeaderNames.MaxForwards; break; case 49: - flag = 0x400000000L; + flag = 0x800000000L; values = ref _headers._ProxyAuthorization; nameStr = HeaderNames.ProxyAuthorization; break; case 50: - flag = 0x800000000L; + flag = 0x1000000000L; values = ref _headers._Range; nameStr = HeaderNames.Range; break; case 51: - flag = 0x1000000000L; + flag = 0x2000000000L; values = ref _headers._Referer; nameStr = HeaderNames.Referer; break; case 57: - flag = 0x20000000000L; + flag = 0x40000000000L; values = ref _headers._TransferEncoding; nameStr = HeaderNames.TransferEncoding; break; @@ -7875,7 +7996,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http nameStr = HeaderNames.UserAgent; break; case 60: - flag = 0x200000000000L; + flag = 0x400000000000L; values = ref _headers._Via; nameStr = HeaderNames.Via; break; @@ -7959,27 +8080,27 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } return true; case 5: - flag = 0x20000L; + flag = 0x40000L; values = ref _headers._Cookie; nameStr = HeaderNames.Cookie; break; case 6: - flag = 0x80000L; + flag = 0x100000L; values = ref _headers._Date; nameStr = HeaderNames.Date; break; case 8: - flag = 0x4000000L; + flag = 0x8000000L; values = ref _headers._IfModifiedSince; nameStr = HeaderNames.IfModifiedSince; break; case 9: - flag = 0x8000000L; + flag = 0x10000000L; values = ref _headers._IfNoneMatch; nameStr = HeaderNames.IfNoneMatch; break; case 13: - flag = 0x1000000000L; + flag = 0x2000000000L; values = ref _headers._Referer; nameStr = HeaderNames.Referer; break; @@ -7996,7 +8117,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http break; case 22: case 23: - flag = 0x80L; + flag = 0x100L; values = ref _headers._Scheme; nameStr = HeaderNames.Scheme; break; @@ -8007,7 +8128,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http nameStr = HeaderNames.Accept; break; case 31: - flag = 0x200L; + flag = 0x400L; values = ref _headers._AcceptEncoding; nameStr = HeaderNames.AcceptEncoding; break; @@ -8017,7 +8138,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 39: case 40: case 41: - flag = 0x8000L; + flag = 0x10000L; values = ref _headers._CacheControl; nameStr = HeaderNames.CacheControl; break; @@ -8032,48 +8153,48 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http case 52: case 53: case 54: - flag = 0x10000L; + flag = 0x20000L; values = ref _headers._ContentType; nameStr = HeaderNames.ContentType; break; case 55: - flag = 0x800000000L; + flag = 0x1000000000L; values = ref _headers._Range; nameStr = HeaderNames.Range; break; case 72: - flag = 0x400L; + flag = 0x800L; values = ref _headers._AcceptLanguage; nameStr = HeaderNames.AcceptLanguage; break; case 80: - flag = 0x800L; + flag = 0x1000L; values = ref _headers._AccessControlRequestHeaders; nameStr = HeaderNames.AccessControlRequestHeaders; break; case 81: case 82: - flag = 0x1000L; + flag = 0x2000L; values = ref _headers._AccessControlRequestMethod; nameStr = HeaderNames.AccessControlRequestMethod; break; case 84: - flag = 0x2000L; + flag = 0x4000L; values = ref _headers._Authorization; nameStr = HeaderNames.Authorization; break; case 89: - flag = 0x10000000L; + flag = 0x20000000L; values = ref _headers._IfRange; nameStr = HeaderNames.IfRange; break; case 90: - flag = 0x100000000L; + flag = 0x200000000L; values = ref _headers._Origin; nameStr = HeaderNames.Origin; break; case 94: - flag = 0x100000000000L; + flag = 0x200000000000L; values = ref _headers._UpgradeInsecureRequests; nameStr = HeaderNames.UpgradeInsecureRequests; break; @@ -8138,6 +8259,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http public StringValues _Authority; public StringValues _Method; public StringValues _Path; + public StringValues _Protocol; public StringValues _Scheme; public StringValues _AcceptCharset; public StringValues _AcceptEncoding; @@ -8223,207 +8345,212 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http _current = new KeyValuePair(HeaderNames.Path, _collection._headers._Path); _currentBits ^= 0x40L; break; - case 7: // Header: ":scheme" + case 7: // Header: ":protocol" Debug.Assert((_currentBits & 0x80L) != 0); - _current = new KeyValuePair(HeaderNames.Scheme, _collection._headers._Scheme); + _current = new KeyValuePair(HeaderNames.Protocol, _collection._headers._Protocol); _currentBits ^= 0x80L; break; - case 8: // Header: "Accept-Charset" + case 8: // Header: ":scheme" Debug.Assert((_currentBits & 0x100L) != 0); - _current = new KeyValuePair(HeaderNames.AcceptCharset, _collection._headers._AcceptCharset); + _current = new KeyValuePair(HeaderNames.Scheme, _collection._headers._Scheme); _currentBits ^= 0x100L; break; - case 9: // Header: "Accept-Encoding" + case 9: // Header: "Accept-Charset" Debug.Assert((_currentBits & 0x200L) != 0); - _current = new KeyValuePair(HeaderNames.AcceptEncoding, _collection._headers._AcceptEncoding); + _current = new KeyValuePair(HeaderNames.AcceptCharset, _collection._headers._AcceptCharset); _currentBits ^= 0x200L; break; - case 10: // Header: "Accept-Language" + case 10: // Header: "Accept-Encoding" Debug.Assert((_currentBits & 0x400L) != 0); - _current = new KeyValuePair(HeaderNames.AcceptLanguage, _collection._headers._AcceptLanguage); + _current = new KeyValuePair(HeaderNames.AcceptEncoding, _collection._headers._AcceptEncoding); _currentBits ^= 0x400L; break; - case 11: // Header: "Access-Control-Request-Headers" + case 11: // Header: "Accept-Language" Debug.Assert((_currentBits & 0x800L) != 0); - _current = new KeyValuePair(HeaderNames.AccessControlRequestHeaders, _collection._headers._AccessControlRequestHeaders); + _current = new KeyValuePair(HeaderNames.AcceptLanguage, _collection._headers._AcceptLanguage); _currentBits ^= 0x800L; break; - case 12: // Header: "Access-Control-Request-Method" + case 12: // Header: "Access-Control-Request-Headers" Debug.Assert((_currentBits & 0x1000L) != 0); - _current = new KeyValuePair(HeaderNames.AccessControlRequestMethod, _collection._headers._AccessControlRequestMethod); + _current = new KeyValuePair(HeaderNames.AccessControlRequestHeaders, _collection._headers._AccessControlRequestHeaders); _currentBits ^= 0x1000L; break; - case 13: // Header: "Authorization" + case 13: // Header: "Access-Control-Request-Method" Debug.Assert((_currentBits & 0x2000L) != 0); - _current = new KeyValuePair(HeaderNames.Authorization, _collection._headers._Authorization); + _current = new KeyValuePair(HeaderNames.AccessControlRequestMethod, _collection._headers._AccessControlRequestMethod); _currentBits ^= 0x2000L; break; - case 14: // Header: "baggage" + case 14: // Header: "Authorization" Debug.Assert((_currentBits & 0x4000L) != 0); - _current = new KeyValuePair(HeaderNames.Baggage, _collection._headers._Baggage); + _current = new KeyValuePair(HeaderNames.Authorization, _collection._headers._Authorization); _currentBits ^= 0x4000L; break; - case 15: // Header: "Cache-Control" + case 15: // Header: "baggage" Debug.Assert((_currentBits & 0x8000L) != 0); - _current = new KeyValuePair(HeaderNames.CacheControl, _collection._headers._CacheControl); + _current = new KeyValuePair(HeaderNames.Baggage, _collection._headers._Baggage); _currentBits ^= 0x8000L; break; - case 16: // Header: "Content-Type" + case 16: // Header: "Cache-Control" Debug.Assert((_currentBits & 0x10000L) != 0); - _current = new KeyValuePair(HeaderNames.ContentType, _collection._headers._ContentType); + _current = new KeyValuePair(HeaderNames.CacheControl, _collection._headers._CacheControl); _currentBits ^= 0x10000L; break; - case 17: // Header: "Cookie" + case 17: // Header: "Content-Type" Debug.Assert((_currentBits & 0x20000L) != 0); - _current = new KeyValuePair(HeaderNames.Cookie, _collection._headers._Cookie); + _current = new KeyValuePair(HeaderNames.ContentType, _collection._headers._ContentType); _currentBits ^= 0x20000L; break; - case 18: // Header: "Correlation-Context" + case 18: // Header: "Cookie" Debug.Assert((_currentBits & 0x40000L) != 0); - _current = new KeyValuePair(HeaderNames.CorrelationContext, _collection._headers._CorrelationContext); + _current = new KeyValuePair(HeaderNames.Cookie, _collection._headers._Cookie); _currentBits ^= 0x40000L; break; - case 19: // Header: "Date" + case 19: // Header: "Correlation-Context" Debug.Assert((_currentBits & 0x80000L) != 0); - _current = new KeyValuePair(HeaderNames.Date, _collection._headers._Date); + _current = new KeyValuePair(HeaderNames.CorrelationContext, _collection._headers._CorrelationContext); _currentBits ^= 0x80000L; break; - case 20: // Header: "Expect" + case 20: // Header: "Date" Debug.Assert((_currentBits & 0x100000L) != 0); - _current = new KeyValuePair(HeaderNames.Expect, _collection._headers._Expect); + _current = new KeyValuePair(HeaderNames.Date, _collection._headers._Date); _currentBits ^= 0x100000L; break; - case 21: // Header: "From" + case 21: // Header: "Expect" Debug.Assert((_currentBits & 0x200000L) != 0); - _current = new KeyValuePair(HeaderNames.From, _collection._headers._From); + _current = new KeyValuePair(HeaderNames.Expect, _collection._headers._Expect); _currentBits ^= 0x200000L; break; - case 22: // Header: "Grpc-Accept-Encoding" + case 22: // Header: "From" Debug.Assert((_currentBits & 0x400000L) != 0); - _current = new KeyValuePair(HeaderNames.GrpcAcceptEncoding, _collection._headers._GrpcAcceptEncoding); + _current = new KeyValuePair(HeaderNames.From, _collection._headers._From); _currentBits ^= 0x400000L; break; - case 23: // Header: "Grpc-Encoding" + case 23: // Header: "Grpc-Accept-Encoding" Debug.Assert((_currentBits & 0x800000L) != 0); - _current = new KeyValuePair(HeaderNames.GrpcEncoding, _collection._headers._GrpcEncoding); + _current = new KeyValuePair(HeaderNames.GrpcAcceptEncoding, _collection._headers._GrpcAcceptEncoding); _currentBits ^= 0x800000L; break; - case 24: // Header: "Grpc-Timeout" + case 24: // Header: "Grpc-Encoding" Debug.Assert((_currentBits & 0x1000000L) != 0); - _current = new KeyValuePair(HeaderNames.GrpcTimeout, _collection._headers._GrpcTimeout); + _current = new KeyValuePair(HeaderNames.GrpcEncoding, _collection._headers._GrpcEncoding); _currentBits ^= 0x1000000L; break; - case 25: // Header: "If-Match" + case 25: // Header: "Grpc-Timeout" Debug.Assert((_currentBits & 0x2000000L) != 0); - _current = new KeyValuePair(HeaderNames.IfMatch, _collection._headers._IfMatch); + _current = new KeyValuePair(HeaderNames.GrpcTimeout, _collection._headers._GrpcTimeout); _currentBits ^= 0x2000000L; break; - case 26: // Header: "If-Modified-Since" + case 26: // Header: "If-Match" Debug.Assert((_currentBits & 0x4000000L) != 0); - _current = new KeyValuePair(HeaderNames.IfModifiedSince, _collection._headers._IfModifiedSince); + _current = new KeyValuePair(HeaderNames.IfMatch, _collection._headers._IfMatch); _currentBits ^= 0x4000000L; break; - case 27: // Header: "If-None-Match" + case 27: // Header: "If-Modified-Since" Debug.Assert((_currentBits & 0x8000000L) != 0); - _current = new KeyValuePair(HeaderNames.IfNoneMatch, _collection._headers._IfNoneMatch); + _current = new KeyValuePair(HeaderNames.IfModifiedSince, _collection._headers._IfModifiedSince); _currentBits ^= 0x8000000L; break; - case 28: // Header: "If-Range" + case 28: // Header: "If-None-Match" Debug.Assert((_currentBits & 0x10000000L) != 0); - _current = new KeyValuePair(HeaderNames.IfRange, _collection._headers._IfRange); + _current = new KeyValuePair(HeaderNames.IfNoneMatch, _collection._headers._IfNoneMatch); _currentBits ^= 0x10000000L; break; - case 29: // Header: "If-Unmodified-Since" + case 29: // Header: "If-Range" Debug.Assert((_currentBits & 0x20000000L) != 0); - _current = new KeyValuePair(HeaderNames.IfUnmodifiedSince, _collection._headers._IfUnmodifiedSince); + _current = new KeyValuePair(HeaderNames.IfRange, _collection._headers._IfRange); _currentBits ^= 0x20000000L; break; - case 30: // Header: "Keep-Alive" + case 30: // Header: "If-Unmodified-Since" Debug.Assert((_currentBits & 0x40000000L) != 0); - _current = new KeyValuePair(HeaderNames.KeepAlive, _collection._headers._KeepAlive); + _current = new KeyValuePair(HeaderNames.IfUnmodifiedSince, _collection._headers._IfUnmodifiedSince); _currentBits ^= 0x40000000L; break; - case 31: // Header: "Max-Forwards" + case 31: // Header: "Keep-Alive" Debug.Assert((_currentBits & 0x80000000L) != 0); - _current = new KeyValuePair(HeaderNames.MaxForwards, _collection._headers._MaxForwards); + _current = new KeyValuePair(HeaderNames.KeepAlive, _collection._headers._KeepAlive); _currentBits ^= 0x80000000L; break; - case 32: // Header: "Origin" + case 32: // Header: "Max-Forwards" Debug.Assert((_currentBits & 0x100000000L) != 0); - _current = new KeyValuePair(HeaderNames.Origin, _collection._headers._Origin); + _current = new KeyValuePair(HeaderNames.MaxForwards, _collection._headers._MaxForwards); _currentBits ^= 0x100000000L; break; - case 33: // Header: "Pragma" + case 33: // Header: "Origin" Debug.Assert((_currentBits & 0x200000000L) != 0); - _current = new KeyValuePair(HeaderNames.Pragma, _collection._headers._Pragma); + _current = new KeyValuePair(HeaderNames.Origin, _collection._headers._Origin); _currentBits ^= 0x200000000L; break; - case 34: // Header: "Proxy-Authorization" + case 34: // Header: "Pragma" Debug.Assert((_currentBits & 0x400000000L) != 0); - _current = new KeyValuePair(HeaderNames.ProxyAuthorization, _collection._headers._ProxyAuthorization); + _current = new KeyValuePair(HeaderNames.Pragma, _collection._headers._Pragma); _currentBits ^= 0x400000000L; break; - case 35: // Header: "Range" + case 35: // Header: "Proxy-Authorization" Debug.Assert((_currentBits & 0x800000000L) != 0); - _current = new KeyValuePair(HeaderNames.Range, _collection._headers._Range); + _current = new KeyValuePair(HeaderNames.ProxyAuthorization, _collection._headers._ProxyAuthorization); _currentBits ^= 0x800000000L; break; - case 36: // Header: "Referer" + case 36: // Header: "Range" Debug.Assert((_currentBits & 0x1000000000L) != 0); - _current = new KeyValuePair(HeaderNames.Referer, _collection._headers._Referer); + _current = new KeyValuePair(HeaderNames.Range, _collection._headers._Range); _currentBits ^= 0x1000000000L; break; - case 37: // Header: "Request-Id" + case 37: // Header: "Referer" Debug.Assert((_currentBits & 0x2000000000L) != 0); - _current = new KeyValuePair(HeaderNames.RequestId, _collection._headers._RequestId); + _current = new KeyValuePair(HeaderNames.Referer, _collection._headers._Referer); _currentBits ^= 0x2000000000L; break; - case 38: // Header: "TE" + case 38: // Header: "Request-Id" Debug.Assert((_currentBits & 0x4000000000L) != 0); - _current = new KeyValuePair(HeaderNames.TE, _collection._headers._TE); + _current = new KeyValuePair(HeaderNames.RequestId, _collection._headers._RequestId); _currentBits ^= 0x4000000000L; break; - case 39: // Header: "traceparent" + case 39: // Header: "TE" Debug.Assert((_currentBits & 0x8000000000L) != 0); - _current = new KeyValuePair(HeaderNames.TraceParent, _collection._headers._TraceParent); + _current = new KeyValuePair(HeaderNames.TE, _collection._headers._TE); _currentBits ^= 0x8000000000L; break; - case 40: // Header: "tracestate" + case 40: // Header: "traceparent" Debug.Assert((_currentBits & 0x10000000000L) != 0); - _current = new KeyValuePair(HeaderNames.TraceState, _collection._headers._TraceState); + _current = new KeyValuePair(HeaderNames.TraceParent, _collection._headers._TraceParent); _currentBits ^= 0x10000000000L; break; - case 41: // Header: "Transfer-Encoding" + case 41: // Header: "tracestate" Debug.Assert((_currentBits & 0x20000000000L) != 0); - _current = new KeyValuePair(HeaderNames.TransferEncoding, _collection._headers._TransferEncoding); + _current = new KeyValuePair(HeaderNames.TraceState, _collection._headers._TraceState); _currentBits ^= 0x20000000000L; break; - case 42: // Header: "Translate" + case 42: // Header: "Transfer-Encoding" Debug.Assert((_currentBits & 0x40000000000L) != 0); - _current = new KeyValuePair(HeaderNames.Translate, _collection._headers._Translate); + _current = new KeyValuePair(HeaderNames.TransferEncoding, _collection._headers._TransferEncoding); _currentBits ^= 0x40000000000L; break; - case 43: // Header: "Upgrade" + case 43: // Header: "Translate" Debug.Assert((_currentBits & 0x80000000000L) != 0); - _current = new KeyValuePair(HeaderNames.Upgrade, _collection._headers._Upgrade); + _current = new KeyValuePair(HeaderNames.Translate, _collection._headers._Translate); _currentBits ^= 0x80000000000L; break; - case 44: // Header: "Upgrade-Insecure-Requests" + case 44: // Header: "Upgrade" Debug.Assert((_currentBits & 0x100000000000L) != 0); - _current = new KeyValuePair(HeaderNames.UpgradeInsecureRequests, _collection._headers._UpgradeInsecureRequests); + _current = new KeyValuePair(HeaderNames.Upgrade, _collection._headers._Upgrade); _currentBits ^= 0x100000000000L; break; - case 45: // Header: "Via" + case 45: // Header: "Upgrade-Insecure-Requests" Debug.Assert((_currentBits & 0x200000000000L) != 0); - _current = new KeyValuePair(HeaderNames.Via, _collection._headers._Via); + _current = new KeyValuePair(HeaderNames.UpgradeInsecureRequests, _collection._headers._UpgradeInsecureRequests); _currentBits ^= 0x200000000000L; break; - case 46: // Header: "Warning" + case 46: // Header: "Via" Debug.Assert((_currentBits & 0x400000000000L) != 0); - _current = new KeyValuePair(HeaderNames.Warning, _collection._headers._Warning); + _current = new KeyValuePair(HeaderNames.Via, _collection._headers._Via); _currentBits ^= 0x400000000000L; break; - case 47: // Header: "Content-Length" + case 47: // Header: "Warning" + Debug.Assert((_currentBits & 0x800000000000L) != 0); + _current = new KeyValuePair(HeaderNames.Warning, _collection._headers._Warning); + _currentBits ^= 0x800000000000L; + break; + case 48: // Header: "Content-Length" Debug.Assert(_currentBits == 0); _current = new KeyValuePair(HeaderNames.ContentLength, HeaderUtilities.FormatNonNegativeInt64(_collection._contentLength.GetValueOrDefault())); _next = -1; @@ -8445,7 +8572,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } else { - _next = _collection._contentLength.HasValue ? 47 : -1; + _next = _collection._contentLength.HasValue ? 48 : -1; return true; } } diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Connection.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Connection.cs index 13122abe2d4..8303447f011 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Connection.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Connection.cs @@ -56,6 +56,10 @@ internal sealed class Http3Connection : IHttp3StreamLifetimeHandler, IRequestPro _serverSettings.HeaderTableSize = (uint)httpLimits.Http3.HeaderTableSize; _serverSettings.MaxRequestHeaderFieldSectionSize = (uint)httpLimits.MaxRequestHeadersTotalSize; + _serverSettings.EnableWebTransport = Convert.ToUInt32(context.ServiceContext.ServerOptions.EnableWebTransportAndH3Datagrams); + // technically these are 2 different settings so they should have separate values but the Chromium implementation requires + // them to both be 1 to useWebTransport. + _serverSettings.H3Datagram = Convert.ToUInt32(context.ServiceContext.ServerOptions.EnableWebTransportAndH3Datagrams); } private void UpdateHighestOpenedRequestStreamId(long streamId) @@ -656,6 +660,12 @@ internal sealed class Http3Connection : IHttp3StreamLifetimeHandler, IRequestPro break; case Http3SettingType.QPackBlockedStreams: break; + case Http3SettingType.EnableWebTransport: + _clientSettings.EnableWebTransport = (uint)value; + break; + case Http3SettingType.H3Datagram: + _clientSettings.H3Datagram = (uint)value; + break; default: throw new InvalidOperationException("Unexpected setting: " + type); } diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3ControlStream.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3ControlStream.cs index e709d5486db..e9115e5282a 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3ControlStream.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3ControlStream.cs @@ -331,6 +331,8 @@ internal abstract class Http3ControlStream : IHttp3Stream, IThreadPoolWorkItem case (long)Http3SettingType.QPackMaxTableCapacity: case (long)Http3SettingType.MaxFieldSectionSize: case (long)Http3SettingType.QPackBlockedStreams: + case (long)Http3SettingType.EnableWebTransport: + case (long)Http3SettingType.H3Datagram: _context.StreamLifetimeHandler.OnInboundControlStreamSetting((Http3SettingType)id, value); break; default: diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3PeerSettings.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3PeerSettings.cs index 177ec30216b..144e9dc1deb 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3PeerSettings.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3PeerSettings.cs @@ -8,9 +8,13 @@ internal sealed class Http3PeerSettings // Note these are protocol defaults, not Kestrel defaults. public const uint DefaultHeaderTableSize = 0; public const uint DefaultMaxRequestHeaderFieldSize = uint.MaxValue; + public const uint DefaultEnableWebTransport = 0; + public const uint DefaultH3Datagram = 0; public uint HeaderTableSize { get; internal set; } = DefaultHeaderTableSize; public uint MaxRequestHeaderFieldSectionSize { get; internal set; } = DefaultMaxRequestHeaderFieldSize; + public uint EnableWebTransport { get; internal set; } = DefaultEnableWebTransport; + public uint H3Datagram { get; internal set; } = DefaultH3Datagram; // Gets the settings that are different from the protocol defaults (as opposed to the server defaults). internal List GetNonProtocolDefaults() @@ -29,6 +33,16 @@ internal sealed class Http3PeerSettings list.Add(new Http3PeerSetting(Http3SettingType.MaxFieldSectionSize, MaxRequestHeaderFieldSectionSize)); } + if (EnableWebTransport != DefaultEnableWebTransport) + { + list.Add(new Http3PeerSetting(Http3SettingType.EnableWebTransport, EnableWebTransport)); + } + + if (H3Datagram != DefaultH3Datagram) + { + list.Add(new Http3PeerSetting(Http3SettingType.H3Datagram, H3Datagram)); + } + return list; } } diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3SettingType.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3SettingType.cs index 2d12fd96ebe..4e79e025bd0 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3SettingType.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3SettingType.cs @@ -13,5 +13,18 @@ internal enum Http3SettingType : long /// MaxFieldSectionSize = 0x6, // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#section-5 - QPackBlockedStreams = 0x7 + QPackBlockedStreams = 0x7, + + /// + /// SETTINGS_ENABLE_WEBTRANSPORT, default is 0 (off) + /// https://www.ietf.org/archive/id/draft-ietf-webtrans-http3-01.html#name-http-3-settings-parameter-r + /// + EnableWebTransport = 0x2b603742, + + /// + /// H3_DATAGRAM, default is 0 (off) + /// indicates that the server suppprts sending individual datagrams over Http/3 + /// rather than just streams. + /// + H3Datagram = 0xffd277 } diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs index 503e4120b08..fd264c564a9 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs @@ -29,6 +29,7 @@ internal abstract partial class Http3Stream : HttpProtocol, IHttp3Stream, IHttpS private static ReadOnlySpan AuthorityBytes => ":authority"u8; private static ReadOnlySpan MethodBytes => ":method"u8; private static ReadOnlySpan PathBytes => ":path"u8; + private static ReadOnlySpan ProtocolBytes => ":protocol"u8; private static ReadOnlySpan SchemeBytes => ":scheme"u8; private static ReadOnlySpan StatusBytes => ":status"u8; private static ReadOnlySpan ConnectionBytes => "connection"u8; @@ -507,6 +508,10 @@ internal abstract partial class Http3Stream : HttpProtocol, IHttp3Stream, IHttpS { return PseudoHeaderFields.Authority; } + else if (name.SequenceEqual(ProtocolBytes)) + { + return PseudoHeaderFields.Protocol; + } else { return PseudoHeaderFields.Unknown; @@ -821,7 +826,25 @@ internal abstract partial class Http3Stream : HttpProtocol, IHttp3Stream, IHttpS await OnEndStreamReceived(); } - if (!_isMethodConnect && (_parsedPseudoHeaderFields & _mandatoryRequestPseudoHeaderFields) != _mandatoryRequestPseudoHeaderFields) + // https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-http3/#section-3.3 + if (_context.ServiceContext.ServerOptions.EnableWebTransportAndH3Datagrams && HttpRequestHeaders.HeaderProtocol.Count > 0) + { + if (!_isMethodConnect) + { + throw new Http3StreamErrorException(CoreStrings.Http3MethodMustBeConnectWhenUsingProtocolPseudoHeader, Http3ErrorCode.ProtocolError); + } + + if (!_parsedPseudoHeaderFields.HasFlag(PseudoHeaderFields.Authority) || !_parsedPseudoHeaderFields.HasFlag(PseudoHeaderFields.Path)) + { + throw new Http3StreamErrorException(CoreStrings.Http3MissingAuthorityOrPathPseudoHeaders, Http3ErrorCode.ProtocolError); + } + + if (_context.ClientPeerSettings.H3Datagram != _context.ServerPeerSettings.H3Datagram) + { + throw new Http3StreamErrorException(CoreStrings.FormatHttp3DatagramStatusMismatch(_context.ClientPeerSettings.H3Datagram == 1, _context.ServerPeerSettings.H3Datagram == 1), Http3ErrorCode.SettingsError); + } + } + else if (!_isMethodConnect && (_parsedPseudoHeaderFields & _mandatoryRequestPseudoHeaderFields) != _mandatoryRequestPseudoHeaderFields) { // All HTTP/3 requests MUST include exactly one valid value for the :method, :scheme, and :path pseudo-header // fields, unless it is a CONNECT request. An HTTP request that omits mandatory pseudo-header @@ -928,8 +951,8 @@ internal abstract partial class Http3Stream : HttpProtocol, IHttp3Stream, IHttpS return false; } - // CONNECT - :scheme and :path must be excluded - if (Method == Http.HttpMethod.Connect) + // CONNECT - :scheme and :path must be excluded= + if (Method == Http.HttpMethod.Connect && HttpRequestHeaders.HeaderProtocol.Count == 0) { if (!string.IsNullOrEmpty(RequestHeaders[HeaderNames.Scheme]) || !string.IsNullOrEmpty(RequestHeaders[HeaderNames.Path])) { @@ -1157,6 +1180,7 @@ internal abstract partial class Http3Stream : HttpProtocol, IHttp3Stream, IHttpS Path = 0x4, Scheme = 0x8, Status = 0x10, + Protocol = 0x20, Unknown = 0x40000000 } diff --git a/src/Servers/Kestrel/Core/src/KestrelServerOptions.cs b/src/Servers/Kestrel/Core/src/KestrelServerOptions.cs index ec009ae0dfe..4575b3e77c2 100644 --- a/src/Servers/Kestrel/Core/src/KestrelServerOptions.cs +++ b/src/Servers/Kestrel/Core/src/KestrelServerOptions.cs @@ -157,6 +157,24 @@ public class KestrelServerOptions /// internal bool IsDevCertLoaded { get; set; } + /// + /// Internal AppContext switch to toggle the WebTransport and HTTP/3 datagrams experiemental features. + /// + private bool? _enableWebTransportAndH3Datagrams; + internal bool EnableWebTransportAndH3Datagrams + { + get + { + if (!_enableWebTransportAndH3Datagrams.HasValue) + { + _enableWebTransportAndH3Datagrams = AppContext.TryGetSwitch("Microsoft.AspNetCore.Server.Kestrel.Experimental.WebTransportAndH3Datagrams", out var enabled) && enabled; + } + + return _enableWebTransportAndH3Datagrams.Value; + } + set => _enableWebTransportAndH3Datagrams = value; + } + /// /// Specifies a configuration Action to run for each newly created endpoint. Calling this again will replace /// the prior action. diff --git a/src/Servers/Kestrel/samples/Http3SampleApp/Http3SampleApp.csproj b/src/Servers/Kestrel/samples/Http3SampleApp/Http3SampleApp.csproj index c56f7fb3916..e65103ddb5a 100644 --- a/src/Servers/Kestrel/samples/Http3SampleApp/Http3SampleApp.csproj +++ b/src/Servers/Kestrel/samples/Http3SampleApp/Http3SampleApp.csproj @@ -16,4 +16,9 @@ + + + + + diff --git a/src/Servers/Kestrel/samples/Http3SampleApp/Program.cs b/src/Servers/Kestrel/samples/Http3SampleApp/Program.cs index 22a9d279119..c65b05bec00 100644 --- a/src/Servers/Kestrel/samples/Http3SampleApp/Program.cs +++ b/src/Servers/Kestrel/samples/Http3SampleApp/Program.cs @@ -1,7 +1,9 @@ // 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; using System.Net.Security; +using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using Microsoft.AspNetCore.Connections; using Microsoft.AspNetCore.Internal; @@ -22,25 +24,18 @@ public class Program }) .ConfigureWebHost(webHost => { + var cert = CertificateLoader.LoadFromStoreCert("localhost", StoreName.My.ToString(), StoreLocation.CurrentUser, false); + webHost.UseKestrel() .ConfigureKestrel((context, options) => { - var cert = CertificateLoader.LoadFromStoreCert("localhost", StoreName.My.ToString(), StoreLocation.CurrentUser, false); - - options.ConfigureHttpsDefaults(httpsOptions => - { - httpsOptions.ServerCertificate = cert; - // httpsOptions.ClientCertificateMode = ClientCertificateMode.AllowCertificate; - // httpsOptions.AllowAnyClientCertificate(); - }); - options.ListenAnyIP(5000, listenOptions => { listenOptions.UseConnectionLogging(); listenOptions.Protocols = HttpProtocols.Http1AndHttp2; }); - options.ListenAnyIP(5001, listenOptions => + options.Listen(IPAddress.Any, 5001, listenOptions => { listenOptions.UseHttps(); listenOptions.UseConnectionLogging(); @@ -49,8 +44,8 @@ public class Program options.ListenAnyIP(5002, listenOptions => { - listenOptions.UseHttps(StoreName.My, "localhost"); listenOptions.UseConnectionLogging(); + listenOptions.UseHttps(StoreName.My, "localhost"); listenOptions.Protocols = HttpProtocols.Http3; }); @@ -108,6 +103,14 @@ public class Program listenOptions.UseConnectionLogging(); listenOptions.Protocols = HttpProtocols.Http1AndHttp2; }); + + // Port configured for WebTransport + options.Listen(IPAddress.Any, 5007, listenOptions => + { + listenOptions.UseHttps(GenerateManualCertificate()); + listenOptions.UseConnectionLogging(); + listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3; + }); }) .UseStartup(); }); @@ -119,4 +122,54 @@ public class Program host.Run(); } + + // Adapted from: https://github.com/wegylexy/webtransport + // We will need to eventually merge this with existing Kestrel certificate generation + // tracked in issue #41762 + private static X509Certificate2 GenerateManualCertificate() + { + X509Certificate2 cert = null; + var store = new X509Store("KestrelWebTransportCertificates", StoreLocation.CurrentUser); + store.Open(OpenFlags.ReadWrite); + if (store.Certificates.Count > 0) + { + cert = store.Certificates[^1]; + + // rotate key after it expires + if (DateTime.Parse(cert.GetExpirationDateString(), null) < DateTimeOffset.UtcNow) + { + cert = null; + } + } + if (cert == null) + { + // generate a new cert + var now = DateTimeOffset.UtcNow; + SubjectAlternativeNameBuilder sanBuilder = new(); + sanBuilder.AddDnsName("localhost"); + using var ec = ECDsa.Create(ECCurve.NamedCurves.nistP256); + CertificateRequest req = new("CN=localhost", ec, HashAlgorithmName.SHA256); + // Adds purpose + req.CertificateExtensions.Add(new X509EnhancedKeyUsageExtension(new OidCollection + { + new("1.3.6.1.5.5.7.3.1") // serverAuth + }, false)); + // Adds usage + req.CertificateExtensions.Add(new X509KeyUsageExtension(X509KeyUsageFlags.DigitalSignature, false)); + // Adds subject alternate names + req.CertificateExtensions.Add(sanBuilder.Build()); + // Sign + using var crt = req.CreateSelfSigned(now, now.AddDays(14)); // 14 days is the max duration of a certificate for this + cert = new(crt.Export(X509ContentType.Pfx)); + + // Save + store.Add(cert); + } + store.Close(); + + var hash = SHA256.HashData(cert.RawData); + var certStr = Convert.ToBase64String(hash); + Console.WriteLine($"\n\n\n\n\nCertificate: {certStr}\n\n\n\n"); // <-- you will need to put this output into the JS API call to allo wthe connection + return cert; + } } diff --git a/src/Servers/Kestrel/shared/KnownHeaders.cs b/src/Servers/Kestrel/shared/KnownHeaders.cs index c04451b3f91..8ce3eaecf81 100644 --- a/src/Servers/Kestrel/shared/KnownHeaders.cs +++ b/src/Servers/Kestrel/shared/KnownHeaders.cs @@ -27,6 +27,7 @@ public class KnownHeaders HeaderNames.Connection, HeaderNames.Scheme, HeaderNames.Path, + HeaderNames.Protocol, HeaderNames.Method, HeaderNames.Authority, HeaderNames.Host, @@ -45,7 +46,8 @@ public class KnownHeaders "Method", // :method "Path", // :path "Scheme", // :scheme - "Status" // :status + "Status", // :status + "Protocol" // :protocol }; public static readonly string[] NonApiHeaders = @@ -132,6 +134,7 @@ public class KnownHeaders HeaderNames.IfRange, HeaderNames.IfUnmodifiedSince, HeaderNames.MaxForwards, + HeaderNames.Protocol, HeaderNames.ProxyAuthorization, HeaderNames.Referer, HeaderNames.Range, diff --git a/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/WebTransportTests.cs b/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/WebTransportTests.cs new file mode 100644 index 00000000000..990752c0f5c --- /dev/null +++ b/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/WebTransportTests.cs @@ -0,0 +1,138 @@ +// 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; +using System.Net.Http; +using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http3; +using Microsoft.AspNetCore.Testing; +using Microsoft.Net.Http.Headers; +using Http3SettingType = Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http3.Http3SettingType; + +namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests; + +public class WebTransportTests : Http3TestBase +{ + [Fact] + public async Task WebTransportHandshake_ClientToServerPasses() + { + _serviceContext.ServerOptions.EnableWebTransportAndH3Datagrams = true; + + await Http3Api.InitializeConnectionAsync(_noopApplication); + var controlStream = await Http3Api.CreateControlStream(); + var controlStream2 = await Http3Api.GetInboundControlStream(); + + var settings = new Http3PeerSettings() + { + EnableWebTransport = 1, + H3Datagram = 1, + }; + + await controlStream.SendSettingsAsync(settings.GetNonProtocolDefaults()); + var response1 = await controlStream2.ExpectSettingsAsync(); + + await Http3Api.ServerReceivedSettingsReader.ReadAsync().DefaultTimeout(); + + Assert.Equal(1, response1[(long)Http3SettingType.EnableWebTransport]); + + var requestStream = await Http3Api.CreateRequestStream(); + var headersConnectFrame = new[] + { + new KeyValuePair(HeaderNames.Method, "CONNECT"), + new KeyValuePair(HeaderNames.Protocol, "webtransport"), + new KeyValuePair(HeaderNames.Scheme, "http"), + new KeyValuePair(HeaderNames.Path, "/"), + new KeyValuePair(HeaderNames.Authority, "server.example.com"), + new KeyValuePair(HeaderNames.Origin, "server.example.com") + }; + + await requestStream.SendHeadersAsync(headersConnectFrame); + var response2 = await requestStream.ExpectHeadersAsync(); + + Assert.Equal((int)HttpStatusCode.OK, Convert.ToInt32(response2[HeaderNames.Status], null)); + + await requestStream.OnDisposedTask.DefaultTimeout(); + } + + [Theory] + [InlineData( + ((long)Http3ErrorCode.ProtocolError), + nameof(CoreStrings.Http3MethodMustBeConnectWhenUsingProtocolPseudoHeader), + nameof(HeaderNames.Method), "GET", // incorrect method (verifies that webtransport doesn't break regular Http/3 get) + nameof(HeaderNames.Protocol), "webtransport", + nameof(HeaderNames.Scheme), "http", + nameof(HeaderNames.Path), "/", + nameof(HeaderNames.Authority), "server.example.com", + nameof(HeaderNames.Origin), "server.example.com")] + [InlineData( + ((long)Http3ErrorCode.ProtocolError), + nameof(CoreStrings.Http3MissingAuthorityOrPathPseudoHeaders), + nameof(HeaderNames.Method), "CONNECT", + nameof(HeaderNames.Protocol), "webtransport", + nameof(HeaderNames.Scheme), "http", + nameof(HeaderNames.Authority), "server.example.com", + nameof(HeaderNames.Origin), "server.example.com")] // no path + [InlineData( + ((long)Http3ErrorCode.ProtocolError), + nameof(CoreStrings.Http3MissingAuthorityOrPathPseudoHeaders), + nameof(HeaderNames.Method), "CONNECT", + nameof(HeaderNames.Protocol), "webtransport", + nameof(HeaderNames.Scheme), "http", + nameof(HeaderNames.Path), "/", + nameof(HeaderNames.Origin), "server.example.com")] // no authority + public async Task WebTransportHandshake_IncorrectHeadersRejects(long error, string targetErrorMessage, params string[] headers) // todo replace the "" with CoreStrings.... then push (maybe also update the waitforstreamerror function) and resolve stephen's comment + { + _serviceContext.ServerOptions.EnableWebTransportAndH3Datagrams = true; + + await Http3Api.InitializeConnectionAsync(_noopApplication); + var controlStream = await Http3Api.CreateControlStream(); + var controlStream2 = await Http3Api.GetInboundControlStream(); + + var settings = new Http3PeerSettings() + { + EnableWebTransport = 1, + H3Datagram = 1, + }; + + await controlStream.SendSettingsAsync(settings.GetNonProtocolDefaults()); + var response1 = await controlStream2.ExpectSettingsAsync(); + + await Http3Api.ServerReceivedSettingsReader.ReadAsync().DefaultTimeout(); + + Assert.Equal(1, response1[(long)Http3SettingType.EnableWebTransport]); + + var requestStream = await Http3Api.CreateRequestStream(); + + var headersConnectFrame = new List>(); + for (var i = 0; i < headers.Length; i += 2) + { + headersConnectFrame.Add(new KeyValuePair(GetHeaderFromName(headers[i]), headers[i + 1])); + } + await requestStream.SendHeadersAsync(headersConnectFrame); + + await requestStream.WaitForStreamErrorAsync((Http3ErrorCode)error, AssertExpectedErrorMessages, GetCoreStringFromName(targetErrorMessage)); + } + + private static string GetCoreStringFromName(string headerName) + { + return headerName switch + { + nameof(CoreStrings.Http3MissingAuthorityOrPathPseudoHeaders) => CoreStrings.Http3MissingAuthorityOrPathPseudoHeaders, + nameof(CoreStrings.Http3MethodMustBeConnectWhenUsingProtocolPseudoHeader) => CoreStrings.Http3MethodMustBeConnectWhenUsingProtocolPseudoHeader, + _ => throw new Exception("Core string not mapped yet") + }; + } + + private static string GetHeaderFromName(string coreStringName) + { + return coreStringName switch + { + nameof(HeaderNames.Method) => HeaderNames.Method, + nameof(HeaderNames.Protocol) => HeaderNames.Protocol, + nameof(HeaderNames.Scheme) => HeaderNames.Scheme, + nameof(HeaderNames.Path) => HeaderNames.Path, + nameof(HeaderNames.Authority) => HeaderNames.Authority, + nameof(HeaderNames.Origin) => HeaderNames.Origin, + _ => throw new Exception("Header name not mapped yet") + }; + } +} diff --git a/src/Shared/runtime/Http3/Http3SettingType.cs b/src/Shared/runtime/Http3/Http3SettingType.cs index 40958e3e0fc..4919e8979c3 100644 --- a/src/Shared/runtime/Http3/Http3SettingType.cs +++ b/src/Shared/runtime/Http3/Http3SettingType.cs @@ -33,6 +33,19 @@ namespace System.Net.Http /// The maximum number of request streams that can be blocked waiting for QPack instructions. The default is 0. /// https://tools.ietf.org/html/draft-ietf-quic-qpack-11#section-5 /// - QPackBlockedStreams = 0x7 + QPackBlockedStreams = 0x7, + + /// + /// SETTINGS_ENABLE_WEBTRANSPORT, default is 0 (off) + /// https://www.ietf.org/archive/id/draft-ietf-webtrans-http3-01.html#name-http-3-settings-parameter-r + /// + EnableWebTransport = 0x2b603742, + + /// + /// H3_DATAGRAM, default is 0 (off) + /// indicates that the server suppprts sending individual datagrams over Http/3 + /// rather than just streams. + /// + H3Datagram = 0xffd277 } }