Harden TFM checks #2624
This commit is contained in:
parent
f4477cd5c3
commit
00827e38bb
|
|
@ -76,9 +76,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||||
{
|
{
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_1
|
||||||
await stream.WriteAsync(buffer.First);
|
await stream.WriteAsync(buffer.First);
|
||||||
#else
|
#elif NETSTANDARD2_0
|
||||||
var array = buffer.First.GetArray();
|
var array = buffer.First.GetArray();
|
||||||
await stream.WriteAsync(array.Array, array.Offset, array.Count);
|
await stream.WriteAsync(array.Array, array.Offset, array.Count);
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -87,9 +89,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||||
{
|
{
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_1
|
||||||
await stream.WriteAsync(memory);
|
await stream.WriteAsync(memory);
|
||||||
#else
|
#elif NETSTANDARD2_0
|
||||||
var array = memory.GetArray();
|
var array = memory.GetArray();
|
||||||
await stream.WriteAsync(array.Array, array.Offset, array.Count);
|
await stream.WriteAsync(array.Array, array.Offset, array.Count);
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -129,9 +133,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||||
var outputBuffer = Input.Writer.GetMemory(MinAllocBufferSize);
|
var outputBuffer = Input.Writer.GetMemory(MinAllocBufferSize);
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_1
|
||||||
var bytesRead = await stream.ReadAsync(outputBuffer);
|
var bytesRead = await stream.ReadAsync(outputBuffer);
|
||||||
#else
|
#elif NETSTANDARD2_0
|
||||||
var array = outputBuffer.GetArray();
|
var array = outputBuffer.GetArray();
|
||||||
var bytesRead = await stream.ReadAsync(array.Array, array.Offset, array.Count);
|
var bytesRead = await stream.ReadAsync(array.Array, array.Offset, array.Count);
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
Input.Writer.Advance(bytesRead);
|
Input.Writer.Advance(bytesRead);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||||
Log("Read", destination.Slice(0, read));
|
Log("Read", destination.Slice(0, read));
|
||||||
return read;
|
return read;
|
||||||
}
|
}
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public async override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
|
public async override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
|
||||||
|
|
@ -106,6 +109,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||||
Log("ReadAsync", destination.Span.Slice(0, read));
|
Log("ReadAsync", destination.Span.Slice(0, read));
|
||||||
return read;
|
return read;
|
||||||
}
|
}
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public override long Seek(long offset, SeekOrigin origin)
|
public override long Seek(long offset, SeekOrigin origin)
|
||||||
|
|
@ -130,6 +136,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||||
Log("Write", source);
|
Log("Write", source);
|
||||||
_inner.Write(source);
|
_inner.Write(source);
|
||||||
}
|
}
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
|
public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
|
||||||
|
|
@ -144,6 +153,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||||
Log("WriteAsync", source.Span);
|
Log("WriteAsync", source.Span);
|
||||||
return _inner.WriteAsync(source, cancellationToken);
|
return _inner.WriteAsync(source, cancellationToken);
|
||||||
}
|
}
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private void Log(string method, ReadOnlySpan<byte> buffer)
|
private void Log(string method, ReadOnlySpan<byte> buffer)
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||||
{
|
{
|
||||||
return ReadAsyncInternal(destination);
|
return ReadAsyncInternal(destination);
|
||||||
}
|
}
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public override void Write(byte[] buffer, int offset, int count)
|
public override void Write(byte[] buffer, int offset, int count)
|
||||||
|
|
@ -97,6 +100,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||||
_output.Write(source.Span);
|
_output.Write(source.Span);
|
||||||
await _output.FlushAsync(cancellationToken);
|
await _output.FlushAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public override void Flush()
|
public override void Flush()
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
|
|
||||||
return ReadAsyncInternal(destination, cancellationToken);
|
return ReadAsyncInternal(destination, cancellationToken);
|
||||||
}
|
}
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private async ValueTask<int> ReadAsyncInternal(Memory<byte> buffer, CancellationToken cancellationToken)
|
private async ValueTask<int> ReadAsyncInternal(Memory<byte> buffer, CancellationToken cancellationToken)
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
|
|
||||||
return new ValueTask(_httpResponseControl.WriteAsync(source, cancellationToken));
|
return new ValueTask(_httpResponseControl.WriteAsync(source, cancellationToken));
|
||||||
}
|
}
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public void StartAcceptingWrites()
|
public void StartAcceptingWrites()
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
{
|
{
|
||||||
return _requestStream.ReadAsync(destination, cancellationToken);
|
return _requestStream.ReadAsync(destination, cancellationToken);
|
||||||
}
|
}
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public override Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken)
|
public override Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken)
|
||||||
|
|
@ -167,6 +170,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
{
|
{
|
||||||
return _responseStream.WriteAsync(source, cancellationToken);
|
return _responseStream.WriteAsync(source, cancellationToken);
|
||||||
}
|
}
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public override long Seek(long offset, SeekOrigin origin)
|
public override long Seek(long offset, SeekOrigin origin)
|
||||||
|
|
|
||||||
|
|
@ -90,9 +90,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
// - We change the Kestrel Memory Pool to not use pinned arrays but instead use native memory
|
// - We change the Kestrel Memory Pool to not use pinned arrays but instead use native memory
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_1
|
||||||
await destination.WriteAsync(memory);
|
await destination.WriteAsync(memory);
|
||||||
#else
|
#elif NETSTANDARD2_0
|
||||||
var array = memory.GetArray();
|
var array = memory.GetArray();
|
||||||
await destination.WriteAsync(array.Array, array.Offset, array.Count, cancellationToken);
|
await destination.WriteAsync(array.Array, array.Offset, array.Count, cancellationToken);
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Https.Internal
|
||||||
}
|
}
|
||||||
|
|
||||||
await sslStream.AuthenticateAsServerAsync(sslOptions, CancellationToken.None);
|
await sslStream.AuthenticateAsServerAsync(sslOptions, CancellationToken.None);
|
||||||
#else
|
#elif NETSTANDARD2_0 // No ALPN support
|
||||||
var serverCert = _serverCertificate;
|
var serverCert = _serverCertificate;
|
||||||
if (_serverCertificateSelector != null)
|
if (_serverCertificateSelector != null)
|
||||||
{
|
{
|
||||||
|
|
@ -179,6 +179,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Https.Internal
|
||||||
}
|
}
|
||||||
await sslStream.AuthenticateAsServerAsync(serverCert, certificateRequired,
|
await sslStream.AuthenticateAsServerAsync(serverCert, certificateRequired,
|
||||||
_options.SslProtocols, _options.CheckCertificateRevocation);
|
_options.SslProtocols, _options.CheckCertificateRevocation);
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
catch (OperationCanceledException)
|
catch (OperationCanceledException)
|
||||||
|
|
@ -201,6 +203,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Https.Internal
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_1
|
||||||
feature.ApplicationProtocol = sslStream.NegotiatedApplicationProtocol.Protocol;
|
feature.ApplicationProtocol = sslStream.NegotiatedApplicationProtocol.Protocol;
|
||||||
context.Features.Set<ITlsApplicationProtocolFeature>(feature);
|
context.Features.Set<ITlsApplicationProtocolFeature>(feature);
|
||||||
|
#elif NETSTANDARD2_0 // No ALPN support
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
feature.ClientCertificate = ConvertToX509Certificate2(sslStream.RemoteCertificate);
|
feature.ClientCertificate = ConvertToX509Certificate2(sslStream.RemoteCertificate);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_1
|
||||||
public override ValueTask<int> ReadAsync(Memory<byte> destination, CancellationToken cancellationToken = default)
|
public override ValueTask<int> ReadAsync(Memory<byte> destination, CancellationToken cancellationToken = default)
|
||||||
=> _inner.ReadAsync(destination, cancellationToken);
|
=> _inner.ReadAsync(destination, cancellationToken);
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public override int ReadByte()
|
public override int ReadByte()
|
||||||
|
|
@ -91,6 +94,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_1
|
||||||
public override ValueTask WriteAsync(ReadOnlyMemory<byte> source, CancellationToken cancellationToken = default)
|
public override ValueTask WriteAsync(ReadOnlyMemory<byte> source, CancellationToken cancellationToken = default)
|
||||||
=> _inner.WriteAsync(source, cancellationToken);
|
=> _inner.WriteAsync(source, cancellationToken);
|
||||||
|
#elif NETSTANDARD2_0
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public override void WriteByte(byte value)
|
public override void WriteByte(byte value)
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal
|
||||||
{
|
{
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_1
|
||||||
_eventArgs.SetBuffer(buffer);
|
_eventArgs.SetBuffer(buffer);
|
||||||
#else
|
#elif NETSTANDARD2_0
|
||||||
var segment = buffer.GetArray();
|
var segment = buffer.GetArray();
|
||||||
|
|
||||||
_eventArgs.SetBuffer(segment.Array, segment.Offset, segment.Count);
|
_eventArgs.SetBuffer(segment.Array, segment.Offset, segment.Count);
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
if (!_socket.ReceiveAsync(_eventArgs))
|
if (!_socket.ReceiveAsync(_eventArgs))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal
|
||||||
|
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_1
|
||||||
if (!_eventArgs.MemoryBuffer.Equals(Memory<byte>.Empty))
|
if (!_eventArgs.MemoryBuffer.Equals(Memory<byte>.Empty))
|
||||||
#else
|
#elif NETSTANDARD2_0
|
||||||
if (_eventArgs.Buffer != null)
|
if (_eventArgs.Buffer != null)
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
_eventArgs.SetBuffer(null, 0, 0);
|
_eventArgs.SetBuffer(null, 0, 0);
|
||||||
|
|
@ -63,10 +65,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal
|
||||||
|
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_1
|
||||||
_eventArgs.SetBuffer(MemoryMarshal.AsMemory(memory));
|
_eventArgs.SetBuffer(MemoryMarshal.AsMemory(memory));
|
||||||
#else
|
#elif NETSTANDARD2_0
|
||||||
var segment = memory.GetArray();
|
var segment = memory.GetArray();
|
||||||
|
|
||||||
_eventArgs.SetBuffer(segment.Array, segment.Offset, segment.Count);
|
_eventArgs.SetBuffer(segment.Array, segment.Offset, segment.Count);
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
if (!_socket.SendAsync(_eventArgs))
|
if (!_socket.SendAsync(_eventArgs))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -154,8 +154,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
Assert.NotNull(connection.Features.Get<SslStream>());
|
Assert.NotNull(connection.Features.Get<SslStream>());
|
||||||
#if NETCOREAPP2_2
|
#if NETCOREAPP2_2
|
||||||
Assert.Equal("localhost", name);
|
Assert.Equal("localhost", name);
|
||||||
#else
|
#elif NET461
|
||||||
Assert.Null(name);
|
Assert.Null(name);
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
selectorCalled++;
|
selectorCalled++;
|
||||||
return _x509Certificate2;
|
return _x509Certificate2;
|
||||||
|
|
@ -194,8 +196,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
Assert.NotNull(connection.Features.Get<SslStream>());
|
Assert.NotNull(connection.Features.Get<SslStream>());
|
||||||
#if NETCOREAPP2_2
|
#if NETCOREAPP2_2
|
||||||
Assert.Equal("localhost", name);
|
Assert.Equal("localhost", name);
|
||||||
#else
|
#elif NET461
|
||||||
Assert.Null(name);
|
Assert.Null(name);
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
selectorCalled++;
|
selectorCalled++;
|
||||||
if (selectorCalled == 1)
|
if (selectorCalled == 1)
|
||||||
|
|
@ -282,8 +286,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
Assert.NotNull(connection.Features.Get<SslStream>());
|
Assert.NotNull(connection.Features.Get<SslStream>());
|
||||||
#if NETCOREAPP2_2
|
#if NETCOREAPP2_2
|
||||||
Assert.Equal("localhost", name);
|
Assert.Equal("localhost", name);
|
||||||
#else
|
#elif NET461
|
||||||
Assert.Null(name);
|
Assert.Null(name);
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
#endif
|
#endif
|
||||||
selectorCalled++;
|
selectorCalled++;
|
||||||
return _x509Certificate2;
|
return _x509Certificate2;
|
||||||
|
|
|
||||||
|
|
@ -140,7 +140,7 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
_innerStream.Close();
|
_innerStream.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if NETCOREAPP2_1
|
#if NETCOREAPP2_2
|
||||||
public override int Read(Span<byte> buffer)
|
public override int Read(Span<byte> buffer)
|
||||||
{
|
{
|
||||||
return _innerStream.Read(buffer);
|
return _innerStream.Read(buffer);
|
||||||
|
|
@ -165,7 +165,10 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
{
|
{
|
||||||
_innerStream.CopyTo(destination, bufferSize);
|
_innerStream.CopyTo(destination, bufferSize);
|
||||||
}
|
}
|
||||||
#endif
|
#elif NET461
|
||||||
|
#else
|
||||||
|
#error TFMs need to be updated
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,9 +45,8 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
|
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
|
||||||
{
|
{
|
||||||
var exceptionIsIgnored = IgnoredExceptions.Contains(exception?.GetType());
|
var exceptionIsIgnored = IgnoredExceptions.Contains(exception?.GetType());
|
||||||
#if true
|
|
||||||
if (logLevel == LogLevel.Critical && ThrowOnCriticalErrors && !exceptionIsIgnored)
|
if (logLevel == LogLevel.Critical && ThrowOnCriticalErrors && !exceptionIsIgnored)
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
var log = $"Log {logLevel}[{eventId}]: {formatter(state, exception)} {exception}";
|
var log = $"Log {logLevel}[{eventId}]: {formatter(state, exception)} {exception}";
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue