Fix adapted output pipe options (#1682)
This commit is contained in:
parent
6036f27f52
commit
3045cff3c5
|
|
@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal
|
|||
private PipeFactory PipeFactory => _context.PipeFactory;
|
||||
|
||||
// Internal for testing
|
||||
internal PipeOptions AdaptedPipeOptions => new PipeOptions
|
||||
internal PipeOptions AdaptedInputPipeOptions => new PipeOptions
|
||||
{
|
||||
ReaderScheduler = InlineScheduler.Default,
|
||||
WriterScheduler = InlineScheduler.Default,
|
||||
|
|
@ -56,6 +56,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal
|
|||
MaximumSizeLow = _context.ServiceContext.ServerOptions.Limits.MaxRequestBufferSize ?? 0
|
||||
};
|
||||
|
||||
internal PipeOptions AdaptedOutputPipeOptions => new PipeOptions
|
||||
{
|
||||
ReaderScheduler = InlineScheduler.Default,
|
||||
WriterScheduler = InlineScheduler.Default,
|
||||
MaximumSizeHigh = _context.ServiceContext.ServerOptions.Limits.MaxResponseBufferSize ?? 0,
|
||||
MaximumSizeLow = _context.ServiceContext.ServerOptions.Limits.MaxResponseBufferSize ?? 0
|
||||
};
|
||||
|
||||
private IKestrelTrace Log => _context.ServiceContext.Log;
|
||||
|
||||
public void StartRequestProcessing()
|
||||
|
|
@ -125,8 +133,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal
|
|||
_filteredStream = adapterContext.ConnectionStream;
|
||||
_adaptedPipeline = new AdaptedPipeline(
|
||||
adapterContext.ConnectionStream,
|
||||
PipeFactory.Create(AdaptedPipeOptions),
|
||||
PipeFactory.Create(AdaptedPipeOptions));
|
||||
PipeFactory.Create(AdaptedInputPipeOptions),
|
||||
PipeFactory.Create(AdaptedOutputPipeOptions));
|
||||
|
||||
_frame.Input = _adaptedPipeline.Input.Reader;
|
||||
_frame.Output = _adaptedPipeline.Output;
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
|||
[Theory]
|
||||
[InlineData(10, 10, 10)]
|
||||
[InlineData(null, 0, 0)]
|
||||
public void AdaptedPipeOptionsConfiguredCorrectly(long? maxRequestBufferSize, long expectedMaximumSizeLow, long expectedMaximumSizeHigh)
|
||||
public void AdaptedInputPipeOptionsConfiguredCorrectly(long? maxRequestBufferSize, long expectedMaximumSizeLow, long expectedMaximumSizeHigh)
|
||||
{
|
||||
var serviceContext = new TestServiceContext();
|
||||
serviceContext.ServerOptions.Limits.MaxRequestBufferSize = maxRequestBufferSize;
|
||||
|
|
@ -64,10 +64,29 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
|||
ServiceContext = serviceContext
|
||||
});
|
||||
|
||||
Assert.Equal(expectedMaximumSizeLow, connectionLifetime.AdaptedPipeOptions.MaximumSizeLow);
|
||||
Assert.Equal(expectedMaximumSizeHigh, connectionLifetime.AdaptedPipeOptions.MaximumSizeHigh);
|
||||
Assert.Same(InlineScheduler.Default, connectionLifetime.AdaptedPipeOptions.ReaderScheduler);
|
||||
Assert.Same(InlineScheduler.Default, connectionLifetime.AdaptedPipeOptions.WriterScheduler);
|
||||
Assert.Equal(expectedMaximumSizeLow, connectionLifetime.AdaptedInputPipeOptions.MaximumSizeLow);
|
||||
Assert.Equal(expectedMaximumSizeHigh, connectionLifetime.AdaptedInputPipeOptions.MaximumSizeHigh);
|
||||
Assert.Same(InlineScheduler.Default, connectionLifetime.AdaptedInputPipeOptions.ReaderScheduler);
|
||||
Assert.Same(InlineScheduler.Default, connectionLifetime.AdaptedInputPipeOptions.WriterScheduler);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(10, 10, 10)]
|
||||
[InlineData(null, 0, 0)]
|
||||
public void AdaptedOutputPipeOptionsConfiguredCorrectly(long? maxRequestBufferSize, long expectedMaximumSizeLow, long expectedMaximumSizeHigh)
|
||||
{
|
||||
var serviceContext = new TestServiceContext();
|
||||
serviceContext.ServerOptions.Limits.MaxResponseBufferSize = maxRequestBufferSize;
|
||||
|
||||
var connectionLifetime = new FrameConnection(new FrameConnectionContext
|
||||
{
|
||||
ServiceContext = serviceContext
|
||||
});
|
||||
|
||||
Assert.Equal(expectedMaximumSizeLow, connectionLifetime.AdaptedOutputPipeOptions.MaximumSizeLow);
|
||||
Assert.Equal(expectedMaximumSizeHigh, connectionLifetime.AdaptedOutputPipeOptions.MaximumSizeHigh);
|
||||
Assert.Same(InlineScheduler.Default, connectionLifetime.AdaptedOutputPipeOptions.ReaderScheduler);
|
||||
Assert.Same(InlineScheduler.Default, connectionLifetime.AdaptedOutputPipeOptions.WriterScheduler);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue