diff --git a/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/QPack/QPackDecoder.cs b/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/QPack/QPackDecoder.cs index 77a3baa8a3de69..8488d0a0713219 100644 --- a/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/QPack/QPackDecoder.cs +++ b/src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/QPack/QPackDecoder.cs @@ -176,15 +176,15 @@ public void Reset() _state = State.RequiredInsertCount; } - public void Decode(in ReadOnlySequence headerBlock, IHttpHeadersHandler handler) + public void Decode(in ReadOnlySequence headerBlock, bool endHeaders, IHttpHeadersHandler handler) { foreach (ReadOnlyMemory segment in headerBlock) { - Decode(segment.Span, handler); + Decode(segment.Span, endHeaders: false, handler); } } - public void Decode(ReadOnlySpan headerBlock, IHttpHeadersHandler handler) + public void Decode(ReadOnlySpan headerBlock, bool endHeaders, IHttpHeadersHandler handler) { foreach (byte b in headerBlock) { diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http3RequestStream.cs b/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http3RequestStream.cs index 64f9833e0aa237..5b2c4fd50340aa 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http3RequestStream.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http3RequestStream.cs @@ -839,8 +839,9 @@ private async ValueTask ReadHeadersAsync(long headersLength, CancellationToken c } int processLength = (int)Math.Min(headersLength, _recvBuffer.ActiveLength); + bool endHeaders = headersLength == processLength; - _headerDecoder.Decode(_recvBuffer.ActiveSpan.Slice(0, processLength), this); + _headerDecoder.Decode(_recvBuffer.ActiveSpan.Slice(0, processLength), endHeaders, this); _recvBuffer.Discard(processLength); headersLength -= processLength; }