From 479758227926728aeadc2d3e7cb4b470c089756d Mon Sep 17 00:00:00 2001 From: Justin Kotalik Date: Fri, 28 Aug 2020 16:25:42 -0700 Subject: [PATCH] Call inner disable buffering feature (#25251) * Call inner disable buffering feature * Update StreamResponseBodyFeature.cs --- .../Http/src/StreamResponseBodyFeature.cs | 3 +- .../StreamResponseBodyFeatureTests.cs | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/Http/Http/src/StreamResponseBodyFeature.cs b/src/Http/Http/src/StreamResponseBodyFeature.cs index 717b5c08d2..7e7ccae17c 100644 --- a/src/Http/Http/src/StreamResponseBodyFeature.cs +++ b/src/Http/Http/src/StreamResponseBodyFeature.cs @@ -71,10 +71,11 @@ namespace Microsoft.AspNetCore.Http } /// - /// Not supported. + /// Opts out of write buffering for the response. /// public virtual void DisableBuffering() { + PriorFeature?.DisableBuffering(); } /// diff --git a/src/Http/Http/test/Features/StreamResponseBodyFeatureTests.cs b/src/Http/Http/test/Features/StreamResponseBodyFeatureTests.cs index a7624e0969..0e6c2a4ea9 100644 --- a/src/Http/Http/test/Features/StreamResponseBodyFeatureTests.cs +++ b/src/Http/Http/test/Features/StreamResponseBodyFeatureTests.cs @@ -41,6 +41,22 @@ namespace Microsoft.AspNetCore.Http.Features //Assert Assert.Equal(1, streamResponseBodyFeature.StartCalled); } + + [Fact] + public void DisableBufferingCallsInnerFeature() + { + // Arrange + var stream = new MemoryStream(); + + var innerFeature = new InnerDisableBufferingFeature(stream, null); + var streamResponseBodyFeature = new StreamResponseBodyFeature(stream, innerFeature); + + // Act + streamResponseBodyFeature.DisableBuffering(); + + //Assert + Assert.True(innerFeature.DisableBufferingCalled); + } } public class TestStreamResponseBodyFeature : StreamResponseBodyFeature @@ -59,4 +75,19 @@ namespace Microsoft.AspNetCore.Http.Features public int StartCalled { get; private set; } } + + public class InnerDisableBufferingFeature : StreamResponseBodyFeature + { + public InnerDisableBufferingFeature(Stream stream, IHttpResponseBodyFeature priorFeature) + : base(stream, priorFeature) + { + } + + public override void DisableBuffering() + { + DisableBufferingCalled = true; + } + + public bool DisableBufferingCalled { get; set; } + } }