From 649bcc8f616a856d8db3627d74f2d1edfb4526d5 Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Wed, 28 Aug 2019 00:21:32 +0100 Subject: [PATCH] Http2MessageBody.TryRead TryStart/TryStop (#13464) --- .../src/Internal/Http2/Http2MessageBody.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2MessageBody.cs b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2MessageBody.cs index 7edd167138..7dad036475 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2MessageBody.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2MessageBody.cs @@ -69,11 +69,23 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2 public override bool TryRead(out ReadResult readResult) { - var result = _context.RequestBodyPipe.Reader.TryRead(out readResult); - _readResult = readResult; - CountBytesRead(readResult.Buffer.Length); + TryStart(); - return result; + var hasResult = _context.RequestBodyPipe.Reader.TryRead(out readResult); + + if (hasResult) + { + _readResult = readResult; + + CountBytesRead(readResult.Buffer.Length); + + if (readResult.IsCompleted) + { + TryStop(); + } + } + + return hasResult; } public override async ValueTask ReadAsync(CancellationToken cancellationToken = default)