From 5ad37d3290aea549bc05e8c62f4bd5795bd0bac9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Dec 2025 03:38:22 +0000 Subject: [PATCH 1/3] Initial plan From 2e987d0842077aa230ce97bc98239eb2ff913a25 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Dec 2025 03:44:41 +0000 Subject: [PATCH 2/3] Update MinResponseDataRate XML documentation with transport buffer remark Co-authored-by: JamesNK <303201+JamesNK@users.noreply.github.com> --- .../Core/src/Features/IHttpMinResponseDataRateFeature.cs | 4 ++++ src/Servers/Kestrel/Core/src/KestrelServerLimits.cs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/Servers/Kestrel/Core/src/Features/IHttpMinResponseDataRateFeature.cs b/src/Servers/Kestrel/Core/src/Features/IHttpMinResponseDataRateFeature.cs index c90d3cbba0b4..1bf0ef83280f 100644 --- a/src/Servers/Kestrel/Core/src/Features/IHttpMinResponseDataRateFeature.cs +++ b/src/Servers/Kestrel/Core/src/Features/IHttpMinResponseDataRateFeature.cs @@ -17,5 +17,9 @@ public interface IHttpMinResponseDataRateFeature /// This feature is not available for HTTP/2 requests. Instead, use /// for server-wide configuration which applies to both HTTP/2 and HTTP/1.x. /// + /// + /// This rate may not accurately measure how much data a client is reading. This is because data is read from the transport + /// until the transport's operating system buffers are full. + /// MinDataRate? MinDataRate { get; set; } } diff --git a/src/Servers/Kestrel/Core/src/KestrelServerLimits.cs b/src/Servers/Kestrel/Core/src/KestrelServerLimits.cs index ef6a9ea3264e..5dab91ede06a 100644 --- a/src/Servers/Kestrel/Core/src/KestrelServerLimits.cs +++ b/src/Servers/Kestrel/Core/src/KestrelServerLimits.cs @@ -378,6 +378,10 @@ internal void Serialize(Utf8JsonWriter writer) /// bytes divided by the data rate (i.e. the maximum amount of time that write should take to complete with the specified data rate). /// The connection is aborted if the write has not completed by the time that timer expires. /// + /// + /// This rate may not accurately measure how much data a client is reading. This is because data is read from the transport + /// until the transport's operating system buffers are full. + /// /// public MinDataRate? MinResponseDataRate { get; set; } = // Matches the default IIS minBytesPerSecond From f93771cf413f57d658d40683ad9a28e8739860b6 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Fri, 12 Dec 2025 12:00:48 +0800 Subject: [PATCH 3/3] Apply suggestions from code review --- .../Core/src/Features/IHttpMinResponseDataRateFeature.cs | 2 +- src/Servers/Kestrel/Core/src/KestrelServerLimits.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Features/IHttpMinResponseDataRateFeature.cs b/src/Servers/Kestrel/Core/src/Features/IHttpMinResponseDataRateFeature.cs index 1bf0ef83280f..f69ad83a8d2d 100644 --- a/src/Servers/Kestrel/Core/src/Features/IHttpMinResponseDataRateFeature.cs +++ b/src/Servers/Kestrel/Core/src/Features/IHttpMinResponseDataRateFeature.cs @@ -18,7 +18,7 @@ public interface IHttpMinResponseDataRateFeature /// for server-wide configuration which applies to both HTTP/2 and HTTP/1.x. /// /// - /// This rate may not accurately measure how much data a client is reading. This is because data is read from the transport + /// This rate may not accurately measure how much data a client is reading. This is because data is read from the application /// until the transport's operating system buffers are full. /// MinDataRate? MinDataRate { get; set; } diff --git a/src/Servers/Kestrel/Core/src/KestrelServerLimits.cs b/src/Servers/Kestrel/Core/src/KestrelServerLimits.cs index 5dab91ede06a..579f631f8819 100644 --- a/src/Servers/Kestrel/Core/src/KestrelServerLimits.cs +++ b/src/Servers/Kestrel/Core/src/KestrelServerLimits.cs @@ -379,7 +379,7 @@ internal void Serialize(Utf8JsonWriter writer) /// The connection is aborted if the write has not completed by the time that timer expires. /// /// - /// This rate may not accurately measure how much data a client is reading. This is because data is read from the transport + /// This rate may not accurately measure how much data a client is reading. This is because data is read from the application /// until the transport's operating system buffers are full. /// ///