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; } + } }