From 45b5a04393fcd5517463a5caebf10b74d5a976ec Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Mon, 8 Apr 2019 17:34:07 +0100 Subject: [PATCH] Move enumerating extra headers to separate method (#7706) --- .../Core/src/Internal/Http/HttpResponseHeaders.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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) {