diff --git a/src/Servers/Kestrel/Core/src/Internal/Http/HttpResponseHeaders.cs b/src/Servers/Kestrel/Core/src/Internal/Http/HttpResponseHeaders.cs index 02d8a36cd2..1e24c07178 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http/HttpResponseHeaders.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http/HttpResponseHeaders.cs @@ -30,9 +30,17 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http internal void CopyTo(ref BufferWriter buffer) { CopyToFast(ref buffer); - if (MaybeUnknown != null) + + var extraHeaders = MaybeUnknown; + if (extraHeaders != null && extraHeaders.Count > 0) { - foreach (var kv in MaybeUnknown) + // Only reserve stack space for the enumartors if there are extra headers + CopyExtraHeaders(ref buffer, extraHeaders); + } + + static void CopyExtraHeaders(ref BufferWriter buffer, Dictionary headers) + { + foreach (var kv in headers) { foreach (var value in kv.Value) {