diff options
author | Stephen Halter <halter73@gmail.com> | 2022-06-04 02:35:59 +0300 |
---|---|---|
committer | Stephen Halter <halter73@gmail.com> | 2022-06-04 02:35:59 +0300 |
commit | 2a0e63bb234323f072d1ab3df447fa4e0c1a5fcc (patch) | |
tree | 4cbebbe3c12059620be130503717e66ba612ecff | |
parent | 5386635d9b03e334636336a767af01bd5e106b52 (diff) |
Simplify AppCompletedWithNoResponseBodyOrTrailers pathhalter73/41843
-rw-r--r-- | src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs index aef197a59a..b197f531f1 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs @@ -197,6 +197,8 @@ internal sealed class Http2FrameWriter } else if (completed && producer.AppCompletedWithNoResponseBodyOrTrailers) { + Debug.Assert(flushHeaders, "The app completed successfully without flushing headers!"); + if (buffer.Length != 0) { _log.Http2UnexpectedDataRemaining(stream.StreamId, _connectionId); @@ -205,8 +207,7 @@ internal sealed class Http2FrameWriter { stream.DecrementActiveClientStreamCount(); - // Headers have already been written and there is no other content to write - flushResult = await FlushAsync(stream, flushHeaders, outputAborter: null, cancellationToken: default); + flushResult = await FlushEndOfStreamHeadersAsync(stream); } } else @@ -367,7 +368,7 @@ internal sealed class Http2FrameWriter } } - private ValueTask<FlushResult> FlushAsync(Http2Stream stream, bool writeHeaders, IHttpOutputAborter? outputAborter, CancellationToken cancellationToken) + private ValueTask<FlushResult> FlushEndOfStreamHeadersAsync(Http2Stream stream) { lock (_writeLock) { @@ -376,16 +377,12 @@ internal sealed class Http2FrameWriter return default; } - if (writeHeaders) - { - // write headers - WriteResponseHeadersUnsynchronized(stream.StreamId, stream.StatusCode, Http2HeadersFrameFlags.END_STREAM, (HttpResponseHeaders)stream.ResponseHeaders); - } + WriteResponseHeadersUnsynchronized(stream.StreamId, stream.StatusCode, Http2HeadersFrameFlags.END_STREAM, (HttpResponseHeaders)stream.ResponseHeaders); var bytesWritten = _unflushedBytes; _unflushedBytes = 0; - return _flusher.FlushAsync(_minResponseDataRate, bytesWritten, outputAborter, cancellationToken); + return _flusher.FlushAsync(_minResponseDataRate, bytesWritten); } } |