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