Merge branch 'release/2.1' into dev
This commit is contained in:
commit
aa9b9ca724
|
|
@ -145,6 +145,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
return _requestStream.ReadAsync(buffer, offset, count, cancellationToken);
|
return _requestStream.ReadAsync(buffer, offset, count, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if NETCOREAPP2_1
|
||||||
|
public override ValueTask<int> ReadAsync(Memory<byte> destination, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return _requestStream.ReadAsync(destination, cancellationToken);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
public override Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken)
|
public override Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
return _requestStream.CopyToAsync(destination, bufferSize, cancellationToken);
|
return _requestStream.CopyToAsync(destination, bufferSize, cancellationToken);
|
||||||
|
|
@ -155,6 +162,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
return _responseStream.WriteAsync(buffer, offset, count, cancellationToken);
|
return _responseStream.WriteAsync(buffer, offset, count, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if NETCOREAPP2_1
|
||||||
|
public override ValueTask WriteAsync(ReadOnlyMemory<byte> source, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return _responseStream.WriteAsync(source, cancellationToken);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
public override long Seek(long offset, SeekOrigin origin)
|
public override long Seek(long offset, SeekOrigin origin)
|
||||||
{
|
{
|
||||||
return _requestStream.Seek(offset, origin);
|
return _requestStream.Seek(offset, origin);
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
public override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
|
public override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
|
||||||
=> _inner.ReadAsync(buffer, offset, count, cancellationToken);
|
=> _inner.ReadAsync(buffer, offset, count, cancellationToken);
|
||||||
|
|
||||||
|
#if NETCOREAPP2_1
|
||||||
|
public override ValueTask<int> ReadAsync(Memory<byte> destination, CancellationToken cancellationToken = default)
|
||||||
|
=> _inner.ReadAsync(destination, cancellationToken);
|
||||||
|
#endif
|
||||||
|
|
||||||
public override int ReadByte()
|
public override int ReadByte()
|
||||||
=> _inner.ReadByte();
|
=> _inner.ReadByte();
|
||||||
|
|
||||||
|
|
@ -83,6 +88,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
|
public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
|
||||||
=> _inner.WriteAsync(buffer, offset, count, cancellationToken);
|
=> _inner.WriteAsync(buffer, offset, count, cancellationToken);
|
||||||
|
|
||||||
|
#if NETCOREAPP2_1
|
||||||
|
public override ValueTask WriteAsync(ReadOnlyMemory<byte> source, CancellationToken cancellationToken = default)
|
||||||
|
=> _inner.WriteAsync(source, cancellationToken);
|
||||||
|
#endif
|
||||||
|
|
||||||
public override void WriteByte(byte value)
|
public override void WriteByte(byte value)
|
||||||
=> _inner.WriteByte(value);
|
=> _inner.WriteByte(value);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal
|
||||||
internal sealed class SocketConnection : TransportConnection, IDisposable
|
internal sealed class SocketConnection : TransportConnection, IDisposable
|
||||||
{
|
{
|
||||||
private static readonly int MinAllocBufferSize = KestrelMemoryPool.MinimumSegmentSize / 2;
|
private static readonly int MinAllocBufferSize = KestrelMemoryPool.MinimumSegmentSize / 2;
|
||||||
|
private static readonly bool IsWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
|
||||||
|
|
||||||
private readonly Socket _socket;
|
private readonly Socket _socket;
|
||||||
private readonly PipeScheduler _scheduler;
|
private readonly PipeScheduler _scheduler;
|
||||||
|
|
@ -54,8 +55,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal
|
||||||
|
|
||||||
ConnectionClosed = _connectionClosedTokenSource.Token;
|
ConnectionClosed = _connectionClosedTokenSource.Token;
|
||||||
|
|
||||||
_receiver = new SocketReceiver(_socket, _scheduler);
|
// On *nix platforms, Sockets already dispatches to the ThreadPool.
|
||||||
_sender = new SocketSender(_socket, _scheduler);
|
// Yes, the IOQueues are still used for the PipeSchedulers. This is intentional.
|
||||||
|
// https://github.com/aspnet/KestrelHttpServer/issues/2573
|
||||||
|
var awaiterScheduler = IsWindows ? _scheduler : PipeScheduler.Inline;
|
||||||
|
|
||||||
|
_receiver = new SocketReceiver(_socket, awaiterScheduler);
|
||||||
|
_sender = new SocketSender(_socket, awaiterScheduler);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override MemoryPool<byte> MemoryPool { get; }
|
public override MemoryPool<byte> MemoryPool { get; }
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets
|
||||||
= new ResourceManager("Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketsStrings", typeof(SocketsStrings).GetTypeInfo().Assembly);
|
= new ResourceManager("Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketsStrings", typeof(SocketsStrings).GetTypeInfo().Assembly);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Only ListenType.IPEndPoint is supported.
|
/// Only ListenType.IPEndPoint is supported by the Socket Transport. https://go.microsoft.com/fwlink/?linkid=874850
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string OnlyIPEndPointsSupported
|
internal static string OnlyIPEndPointsSupported
|
||||||
{
|
{
|
||||||
|
|
@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Only ListenType.IPEndPoint is supported.
|
/// Only ListenType.IPEndPoint is supported by the Socket Transport. https://go.microsoft.com/fwlink/?linkid=874850
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string FormatOnlyIPEndPointsSupported()
|
internal static string FormatOnlyIPEndPointsSupported()
|
||||||
=> GetString("OnlyIPEndPointsSupported");
|
=> GetString("OnlyIPEndPointsSupported");
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="OnlyIPEndPointsSupported" xml:space="preserve">
|
<data name="OnlyIPEndPointsSupported" xml:space="preserve">
|
||||||
<value>Only ListenType.IPEndPoint is supported.</value>
|
<value>Only ListenType.IPEndPoint is supported by the Socket Transport. https://go.microsoft.com/fwlink/?linkid=874850</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TransportAlreadyBound" xml:space="preserve">
|
<data name="TransportAlreadyBound" xml:space="preserve">
|
||||||
<value>Transport is already bound.</value>
|
<value>Transport is already bound.</value>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue