From 1f89aba05f9dcb2caa7b092f1222cdd3257e9f76 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 20 Apr 2021 09:30:51 +1200 Subject: [PATCH] HTTP/3: Fix variable length encoding (#51486) --- .../aspnetcore/Http3/Helpers/VariableLengthIntegerHelper.cs | 2 +- .../src/System/Net/Http/aspnetcore/Http3/QPack/HeaderField.cs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/Helpers/VariableLengthIntegerHelper.cs b/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/Helpers/VariableLengthIntegerHelper.cs index 8cb1c21513d826..33869c9254aeed 100644 --- a/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/Helpers/VariableLengthIntegerHelper.cs +++ b/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/Helpers/VariableLengthIntegerHelper.cs @@ -33,7 +33,7 @@ internal static class VariableLengthIntegerHelper // public for internal use in aspnetcore public const uint OneByteLimit = (1U << 6) - 1; - public const uint TwoByteLimit = (1U << 16) - 1; + public const uint TwoByteLimit = (1U << 14) - 1; public const uint FourByteLimit = (1U << 30) - 1; public const long EightByteLimit = (1L << 62) - 1; diff --git a/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/QPack/HeaderField.cs b/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/QPack/HeaderField.cs index e299c3cb33349c..b4b80c53798f41 100644 --- a/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/QPack/HeaderField.cs +++ b/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/QPack/HeaderField.cs @@ -5,6 +5,10 @@ namespace System.Net.Http.QPack { internal readonly struct HeaderField { + // https://quicwg.org/base-drafts/draft-ietf-quic-http.html#section-4.1.1.3-1 + // public for internal use in aspnetcore + public const int RfcOverhead = 32; + public HeaderField(byte[] name, byte[] value) { Name = name;