From 07b8318db0ec2d9cf05a8ab2a24847342746a664 Mon Sep 17 00:00:00 2001 From: "Chris Ross (ASP.NET)" Date: Thu, 16 Jul 2020 21:37:46 +0000 Subject: [PATCH 01/13] Merged PR 9042: [3.1] Pass RequestAborted to SendFileAsync This is the 3.1 version of https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore/pullrequest/9014. The concerns in 3.1 are slightly different than prior versions due to a significant redesign in how the response body was handled. In 2.1 very few components implemented IHttpSendFileFeature, and most of those that did would eagerly terminate if the request aborted (e.g. HttpSys server). We mainly had to be concerned about the fallback code that did a copy loop when IHttpSendFileFeature wasn't available. In 3.x the response body Stream, PipeWriter, and SendFileAsync were consolidated onto the new IHttpResponseBodyFeature. Now all servers and component shims support all three ways to send data and we can't make any assumptions about how eagerly they terminate. E.g. many components implemented SendFileAsync using a fallback copy loop, and these components don't have access to RequestAborted to eagerly terminate. This means that in 3.1 we need to pass the RequestAborted token when calling IHttpSendFileFeature.SendFileAsync, as well as any copy loops that have access to the token. I've primarily fixed the HttpResponse.SendFileAsync extension methods and made sure the other affected components call through here. [Infrastructure side note] This commit needs to be rebased on internal/release/3.1 before merging. That branch can't be built locally so I developed this fix based on release/3.1 instead. --- .../src/SendFileResponseExtensions.cs | 23 ++++- ...ft.AspNetCore.Http.Extensions.Tests.csproj | 4 + .../test/SendFileResponseExtensionsTests.cs | 95 ++++++++++++++++--- src/Http/Http.Extensions/test/testfile1kb.txt | 1 + .../StaticFiles/src/StaticFileContext.cs | 43 ++------- .../test/UnitTests/StaticFileContextTest.cs | 31 ++++++ 6 files changed, 144 insertions(+), 53 deletions(-) create mode 100644 src/Http/Http.Extensions/test/testfile1kb.txt diff --git a/src/Http/Http.Extensions/src/SendFileResponseExtensions.cs b/src/Http/Http.Extensions/src/SendFileResponseExtensions.cs index e7fd608c05..8dfae44bdc 100644 --- a/src/Http/Http.Extensions/src/SendFileResponseExtensions.cs +++ b/src/Http/Http.Extensions/src/SendFileResponseExtensions.cs @@ -16,6 +16,8 @@ namespace Microsoft.AspNetCore.Http /// public static class SendFileResponseExtensions { + private const int StreamCopyBufferSize = 64 * 1024; + /// /// Sends the given file using the SendFile extension. /// @@ -110,15 +112,21 @@ namespace Microsoft.AspNetCore.Http if (string.IsNullOrEmpty(file.PhysicalPath)) { CheckRange(offset, count, file.Length); + using var fileContent = file.CreateReadStream(); - using (var fileContent = file.CreateReadStream()) + var useRequestAborted = !cancellationToken.CanBeCanceled; + var localCancel = useRequestAborted ? response.HttpContext.RequestAborted : cancellationToken; + + try { + localCancel.ThrowIfCancellationRequested(); if (offset > 0) { fileContent.Seek(offset, SeekOrigin.Begin); } - await StreamCopyOperation.CopyToAsync(fileContent, response.Body, count, cancellationToken); + await StreamCopyOperation.CopyToAsync(fileContent, response.Body, count, StreamCopyBufferSize, localCancel); } + catch (OperationCanceledException) when (useRequestAborted) { } } else { @@ -126,10 +134,17 @@ namespace Microsoft.AspNetCore.Http } } - private static Task SendFileAsyncCore(HttpResponse response, string fileName, long offset, long? count, CancellationToken cancellationToken = default) + private static async Task SendFileAsyncCore(HttpResponse response, string fileName, long offset, long? count, CancellationToken cancellationToken = default) { + var useRequestAborted = !cancellationToken.CanBeCanceled; + var localCancel = useRequestAborted ? response.HttpContext.RequestAborted : cancellationToken; var sendFile = response.HttpContext.Features.Get(); - return sendFile.SendFileAsync(fileName, offset, count, cancellationToken); + + try + { + await sendFile.SendFileAsync(fileName, offset, count, localCancel); + } + catch (OperationCanceledException) when (useRequestAborted) { } } private static void CheckRange(long offset, long? count, long fileLength) diff --git a/src/Http/Http.Extensions/test/Microsoft.AspNetCore.Http.Extensions.Tests.csproj b/src/Http/Http.Extensions/test/Microsoft.AspNetCore.Http.Extensions.Tests.csproj index 19bf5e753a..fffeeb054b 100644 --- a/src/Http/Http.Extensions/test/Microsoft.AspNetCore.Http.Extensions.Tests.csproj +++ b/src/Http/Http.Extensions/test/Microsoft.AspNetCore.Http.Extensions.Tests.csproj @@ -4,6 +4,10 @@ $(DefaultNetCoreTargetFramework) + + + + diff --git a/src/Http/Http.Extensions/test/SendFileResponseExtensionsTests.cs b/src/Http/Http.Extensions/test/SendFileResponseExtensionsTests.cs index 134b882b99..f20675f9be 100644 --- a/src/Http/Http.Extensions/test/SendFileResponseExtensionsTests.cs +++ b/src/Http/Http.Extensions/test/SendFileResponseExtensionsTests.cs @@ -1,5 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. See License.txt in the project root for license information. +using System; using System.IO; using System.IO.Pipelines; using System.Threading; @@ -28,18 +29,86 @@ namespace Microsoft.AspNetCore.Http.Extensions.Tests await response.SendFileAsync("bob", 1, 3, CancellationToken.None); - Assert.Equal("bob", fakeFeature.name); - Assert.Equal(1, fakeFeature.offset); - Assert.Equal(3, fakeFeature.length); - Assert.Equal(CancellationToken.None, fakeFeature.token); + Assert.Equal("bob", fakeFeature.Name); + Assert.Equal(1, fakeFeature.Offset); + Assert.Equal(3, fakeFeature.Length); + Assert.Equal(CancellationToken.None, fakeFeature.Token); + } + + [Fact] + public async Task SendFile_FallsBackToBodyStream() + { + var body = new MemoryStream(); + var context = new DefaultHttpContext(); + var response = context.Response; + response.Body = body; + + await response.SendFileAsync("testfile1kb.txt", 1, 3, CancellationToken.None); + + Assert.Equal(3, body.Length); + } + + [Fact] + public async Task SendFile_Stream_ThrowsWhenCanceled() + { + var body = new MemoryStream(); + var context = new DefaultHttpContext(); + var response = context.Response; + response.Body = body; + + await Assert.ThrowsAnyAsync( + () => response.SendFileAsync("testfile1kb.txt", 1, 3, new CancellationToken(canceled: true))); + + Assert.Equal(0, body.Length); + } + + [Fact] + public async Task SendFile_Feature_ThrowsWhenCanceled() + { + var context = new DefaultHttpContext(); + var fakeFeature = new FakeResponseBodyFeature(); + context.Features.Set(fakeFeature); + var response = context.Response; + + await Assert.ThrowsAsync( + () => response.SendFileAsync("testfile1kb.txt", 1, 3, new CancellationToken(canceled: true))); + } + + [Fact] + public async Task SendFile_Stream_AbortsSilentlyWhenRequestCanceled() + { + var body = new MemoryStream(); + var context = new DefaultHttpContext(); + context.RequestAborted = new CancellationToken(canceled: true); + var response = context.Response; + response.Body = body; + + await response.SendFileAsync("testfile1kb.txt", 1, 3, CancellationToken.None); + + Assert.Equal(0, body.Length); + } + + [Fact] + public async Task SendFile_Feature_AbortsSilentlyWhenRequestCanceled() + { + var context = new DefaultHttpContext(); + var fakeFeature = new FakeResponseBodyFeature(); + context.Features.Set(fakeFeature); + var token = new CancellationToken(canceled: true); + context.RequestAborted = token; + var response = context.Response; + + await response.SendFileAsync("testfile1kb.txt", 1, 3, CancellationToken.None); + + Assert.Equal(token, fakeFeature.Token); } private class FakeResponseBodyFeature : IHttpResponseBodyFeature { - public string name = null; - public long offset = 0; - public long? length = null; - public CancellationToken token; + public string Name { get; set; } = null; + public long Offset { get; set; } = 0; + public long? Length { get; set; } = null; + public CancellationToken Token { get; set; } public Stream Stream => throw new System.NotImplementedException(); @@ -57,10 +126,12 @@ namespace Microsoft.AspNetCore.Http.Extensions.Tests public Task SendFileAsync(string path, long offset, long? length, CancellationToken cancellation) { - this.name = path; - this.offset = offset; - this.length = length; - this.token = cancellation; + Name = path; + Offset = offset; + Length = length; + Token = cancellation; + + cancellation.ThrowIfCancellationRequested(); return Task.FromResult(0); } diff --git a/src/Http/Http.Extensions/test/testfile1kb.txt b/src/Http/Http.Extensions/test/testfile1kb.txt new file mode 100644 index 0000000000..61d982da1a --- /dev/null +++ b/src/Http/Http.Extensions/test/testfile1kb.txt @@ -0,0 +1 @@ +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/src/Middleware/StaticFiles/src/StaticFileContext.cs b/src/Middleware/StaticFiles/src/StaticFileContext.cs index 3de3576e76..f3864324bf 100644 --- a/src/Middleware/StaticFiles/src/StaticFileContext.cs +++ b/src/Middleware/StaticFiles/src/StaticFileContext.cs @@ -5,11 +5,9 @@ using System; using System.Diagnostics; using System.IO; using System.Linq; -using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Http.Extensions; using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Http.Headers; using Microsoft.AspNetCore.Internal; @@ -21,8 +19,6 @@ namespace Microsoft.AspNetCore.StaticFiles { internal struct StaticFileContext { - private const int StreamCopyBufferSize = 64 * 1024; - private readonly HttpContext _context; private readonly StaticFileOptions _options; private readonly HttpRequest _request; @@ -345,28 +341,15 @@ namespace Microsoft.AspNetCore.StaticFiles { SetCompressionMode(); ApplyResponseHeaders(Constants.Status200Ok); - string physicalPath = _fileInfo.PhysicalPath; - var sendFile = _context.Features.Get(); - if (sendFile != null && !string.IsNullOrEmpty(physicalPath)) - { - // We don't need to directly cancel this, if the client disconnects it will fail silently. - await sendFile.SendFileAsync(physicalPath, 0, _length, CancellationToken.None); - return; - } - try { - using (var readStream = _fileInfo.CreateReadStream()) - { - // Larger StreamCopyBufferSize is required because in case of FileStream readStream isn't going to be buffering - await StreamCopyOperation.CopyToAsync(readStream, _response.Body, _length, StreamCopyBufferSize, _context.RequestAborted); - } + await _context.Response.SendFileAsync(_fileInfo, 0, _length, _context.RequestAborted); } catch (OperationCanceledException ex) { _logger.WriteCancelled(ex); // Don't throw this exception, it's most likely caused by the client disconnecting. - // However, if it was cancelled for any other reason we need to prevent empty responses. + // However, if it was canceled for any other reason we need to prevent empty responses. _context.Abort(); } } @@ -390,31 +373,17 @@ namespace Microsoft.AspNetCore.StaticFiles _response.ContentLength = length; SetCompressionMode(); ApplyResponseHeaders(Constants.Status206PartialContent); - - string physicalPath = _fileInfo.PhysicalPath; - var sendFile = _context.Features.Get(); - if (sendFile != null && !string.IsNullOrEmpty(physicalPath)) - { - _logger.SendingFileRange(_response.Headers[HeaderNames.ContentRange], physicalPath); - // We don't need to directly cancel this, if the client disconnects it will fail silently. - await sendFile.SendFileAsync(physicalPath, start, length, CancellationToken.None); - return; - } - try { - using (var readStream = _fileInfo.CreateReadStream()) - { - readStream.Seek(start, SeekOrigin.Begin); // TODO: What if !CanSeek? - _logger.CopyingFileRange(_response.Headers[HeaderNames.ContentRange], SubPath); - await StreamCopyOperation.CopyToAsync(readStream, _response.Body, length, _context.RequestAborted); - } + var logPath = !string.IsNullOrEmpty(_fileInfo.PhysicalPath) ? _fileInfo.PhysicalPath : SubPath; + _logger.SendingFileRange(_response.Headers[HeaderNames.ContentRange], logPath); + await _context.Response.SendFileAsync(_fileInfo, start, length, _context.RequestAborted); } catch (OperationCanceledException ex) { _logger.WriteCancelled(ex); // Don't throw this exception, it's most likely caused by the client disconnecting. - // However, if it was cancelled for any other reason we need to prevent empty responses. + // However, if it was canceled for any other reason we need to prevent empty responses. _context.Abort(); } } diff --git a/src/Middleware/StaticFiles/test/UnitTests/StaticFileContextTest.cs b/src/Middleware/StaticFiles/test/UnitTests/StaticFileContextTest.cs index efea2a08e5..409cda5b5b 100644 --- a/src/Middleware/StaticFiles/test/UnitTests/StaticFileContextTest.cs +++ b/src/Middleware/StaticFiles/test/UnitTests/StaticFileContextTest.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; @@ -120,6 +121,36 @@ namespace Microsoft.AspNetCore.StaticFiles Assert.Equal(HttpsCompressionMode.Default, httpsCompressionFeature.Mode); } + [Fact] + public async Task RequestAborted_DoesntThrow() + { + var options = new StaticFileOptions(); + var fileProvider = new TestFileProvider(); + fileProvider.AddFile("/foo.txt", new TestFileInfo + { + LastModified = new DateTimeOffset(2014, 1, 2, 3, 4, 5, TimeSpan.Zero) + }); + var pathString = new PathString("/test"); + var httpContext = new DefaultHttpContext(); + httpContext.Request.Path = new PathString("/test/foo.txt"); + httpContext.RequestAborted = new CancellationToken(canceled: true); + var body = new MemoryStream(); + httpContext.Response.Body = body; + var validateResult = StaticFileMiddleware.ValidatePath(httpContext, pathString, out var subPath); + var contentTypeResult = StaticFileMiddleware.LookupContentType(new FileExtensionContentTypeProvider(), options, subPath, out var contentType); + + var context = new StaticFileContext(httpContext, options, NullLogger.Instance, fileProvider, contentType, subPath); + + var result = context.LookupFileInfo(); + Assert.True(validateResult); + Assert.True(contentTypeResult); + Assert.True(result); + + await context.SendAsync(); + + Assert.Equal(0, body.Length); + } + private sealed class TestFileProvider : IFileProvider { private readonly Dictionary _files = new Dictionary(StringComparer.Ordinal); From c9f75a1f41911e3ff8fb180a8a404d2506cb33db Mon Sep 17 00:00:00 2001 From: "Chris Ross (ASP.NET)" Date: Fri, 17 Jul 2020 19:37:20 +0000 Subject: [PATCH 02/13] Merged PR 9163: [3.1] Fix HttSys tests The 3.1 PR builds aren't working so I missed some new test failures caused by my prior change. https://dev.azure.com/dnceng/internal/_build/results?buildId=734369&view=ms.vss-test-web.build-test-results-tab HttpSys has some odd behavior when you call SendFileAsync multiple times on an aborted response. The first time throws an OperationCancelledException, but the second time throws an ObjectDisposedException. This only happens if you enable HttpSysOptions.ThrowWriteExceptions and pass in a cancelled token. https://github.com/dotnet/aspnetcore/blob/472fc5058ecbddd4cd546a40628ec5a0545b8125/src/Servers/HttpSys/src/RequestProcessing/ResponseBody.cs#L577 I'm not aware of any scenarios where SendFileAsync is called multiple times like this, so for now I'm only fixing up the tests. --- .../FunctionalTests/ResponseSendFileTests.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Servers/HttpSys/test/FunctionalTests/ResponseSendFileTests.cs b/src/Servers/HttpSys/test/FunctionalTests/ResponseSendFileTests.cs index 1bda0ddee1..8d54a67a53 100644 --- a/src/Servers/HttpSys/test/FunctionalTests/ResponseSendFileTests.cs +++ b/src/Servers/HttpSys/test/FunctionalTests/ResponseSendFileTests.cs @@ -487,17 +487,21 @@ namespace Microsoft.AspNetCore.Server.HttpSys try { + // Note Response.SendFileAsync uses RequestAborted by default. This can cause the response to be disposed + // before it throws an IOException, but there's a race depending on when the disconnect is noticed. + // Passing our own token to skip that. + using var cts = new CancellationTokenSource(); await Assert.ThrowsAsync(async () => { // It can take several tries before Send notices the disconnect. for (int i = 0; i < Utilities.WriteRetryLimit; i++) { - await httpContext.Response.SendFileAsync(AbsoluteFilePath, 0, null); + await httpContext.Response.SendFileAsync(AbsoluteFilePath, 0, null, cts.Token); } }); await Assert.ThrowsAsync(() => - httpContext.Response.SendFileAsync(AbsoluteFilePath, 0, null)); + httpContext.Response.SendFileAsync(AbsoluteFilePath, 0, null, cts.Token)); testComplete.SetResult(0); } @@ -573,9 +577,13 @@ namespace Microsoft.AspNetCore.Server.HttpSys var testComplete = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); using (Utilities.CreateHttpServer(out var address, async httpContext => { + // Note Response.SendFileAsync uses RequestAborted by default. This can cause the response to be disposed + // before it throws an IOException, but there's a race depending on when the disconnect is noticed. + // Passing our own token to skip that. + using var cts = new CancellationTokenSource(); httpContext.RequestAborted.Register(() => cancellationReceived.SetResult(0)); // First write sends headers - await httpContext.Response.SendFileAsync(AbsoluteFilePath, 0, null); + await httpContext.Response.SendFileAsync(AbsoluteFilePath, 0, null, cts.Token); firstSendComplete.SetResult(0); await clientDisconnected.Task; @@ -586,7 +594,7 @@ namespace Microsoft.AspNetCore.Server.HttpSys // It can take several tries before Write notices the disconnect. for (int i = 0; i < Utilities.WriteRetryLimit; i++) { - await httpContext.Response.SendFileAsync(AbsoluteFilePath, 0, null, CancellationToken.None); + await httpContext.Response.SendFileAsync(AbsoluteFilePath, 0, null, cts.Token); } }); From 40383cf1f9417b7018b51d02b72afdf1cfa1705b Mon Sep 17 00:00:00 2001 From: Brennan Conroy Date: Mon, 20 Jul 2020 19:11:17 +0000 Subject: [PATCH 03/13] Merged PR 9189: Modify WebSockets ValueTaskSource Create the GCHandle per operation and Free it when resetting the ValueTaskSource for re-use. --- .../IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.Read.cs | 6 ++++-- .../IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.Write.cs | 6 ++++-- src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.cs | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.Read.cs b/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.Read.cs index 2dac1a234e..db4068c52c 100644 --- a/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.Read.cs +++ b/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.Read.cs @@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Server.IIS.Core.IO }; private readonly WebSocketsAsyncIOEngine _engine; - private readonly GCHandle _thisHandle; + private GCHandle _thisHandle; private MemoryHandle _inputHandle; private IntPtr _requestHandler; private Memory _memory; @@ -33,11 +33,11 @@ namespace Microsoft.AspNetCore.Server.IIS.Core.IO public WebSocketReadOperation(WebSocketsAsyncIOEngine engine) { _engine = engine; - _thisHandle = GCHandle.Alloc(this); } protected override unsafe bool InvokeOperation(out int hr, out int bytes) { + _thisHandle = GCHandle.Alloc(this); _inputHandle = _memory.Pin(); hr = NativeMethods.HttpWebsocketsReadBytes( @@ -67,6 +67,8 @@ namespace Microsoft.AspNetCore.Server.IIS.Core.IO { base.ResetOperation(); + _thisHandle.Free(); + _memory = default; _inputHandle.Dispose(); _inputHandle = default; diff --git a/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.Write.cs b/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.Write.cs index 3eff3bba46..5e6630aae5 100644 --- a/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.Write.cs +++ b/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.Write.cs @@ -25,16 +25,16 @@ namespace Microsoft.AspNetCore.Server.IIS.Core.IO }; private readonly WebSocketsAsyncIOEngine _engine; - private readonly GCHandle _thisHandle; + private GCHandle _thisHandle; public WebSocketWriteOperation(WebSocketsAsyncIOEngine engine) { _engine = engine; - _thisHandle = GCHandle.Alloc(this); } protected override unsafe int WriteChunks(IntPtr requestHandler, int chunkCount, HttpApiTypes.HTTP_DATA_CHUNK* dataChunks, out bool completionExpected) { + _thisHandle = GCHandle.Alloc(this); return NativeMethods.HttpWebsocketsWriteBytes(requestHandler, dataChunks, chunkCount, WriteCallback, (IntPtr)_thisHandle, out completionExpected); } @@ -42,6 +42,8 @@ namespace Microsoft.AspNetCore.Server.IIS.Core.IO { base.ResetOperation(); + _thisHandle.Free(); + _engine.ReturnOperation(this); } } diff --git a/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.cs b/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.cs index a796af23b3..2c1ac02e20 100644 --- a/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.cs +++ b/src/Servers/IIS/IIS/src/Core/IO/WebSocketsAsyncIOEngine.cs @@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Server.IIS.Core.IO var read = GetReadOperation(); read.Initialize(_handler, memory); read.Invoke(); - return new ValueTask(read, 0); + return new ValueTask(read, 0); } } From 84562dd7d29ac4c8a217fa990e6fee69cd3ef7d4 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 22 Jul 2020 17:57:32 +0000 Subject: [PATCH 04/13] Merged PR 9096: [internal/release/3.1] Update dependencies from dnceng/internal/dotnet-aspnetcore-tooling This pull request updates the following dependencies [marker]: <> (Begin:7bf32a0c-3505-43af-42b0-08d79559e63d) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore-tooling - **Subscription**: 7bf32a0c-3505-43af-42b0-08d79559e63d - **Build**: 20200721.7 - **Date Produced**: 7/22/2020 4:18 AM - **Commit**: 1c22292bc7fca352074d8862cf39fbdb8647f208 - **Branch**: refs/heads/internal/release/3.1 - **Updates**: - **Microsoft.AspNetCore.Razor.Language**: from 3.1.6 to 3.1.7 - **Microsoft.CodeAnalysis.Razor**: from 3.1.6 to 3.1.7 - **Microsoft.NET.Sdk.Razor**: from 3.1.6 to 3.1.7 - **Microsoft.AspNetCore.Mvc.Razor.Extensions**: from 3.1.6 to 3.1.7 [marker]: <> (End:7bf32a0c-3505-43af-42b0-08d79559e63d) --- NuGet.config | 7 +++++++ eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 10 ++++------ 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/NuGet.config b/NuGet.config index 389b3f7ed6..9c8c3933d7 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,6 +4,13 @@ + + + + + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3a9f5d77a7..bb642c2368 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -17,21 +17,21 @@ https://github.com/dotnet/corefx 66409e392d64ed96e5d3a5fda712d9baf51196ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore-tooling - d63ec4a166a5c4f40fcbb823873cfa68cfd39eae + 1c22292bc7fca352074d8862cf39fbdb8647f208 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore-tooling - d63ec4a166a5c4f40fcbb823873cfa68cfd39eae + 1c22292bc7fca352074d8862cf39fbdb8647f208 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore-tooling - d63ec4a166a5c4f40fcbb823873cfa68cfd39eae + 1c22292bc7fca352074d8862cf39fbdb8647f208 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore-tooling - d63ec4a166a5c4f40fcbb823873cfa68cfd39eae + 1c22292bc7fca352074d8862cf39fbdb8647f208 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore diff --git a/eng/Versions.props b/eng/Versions.props index 745665acd6..955550b50a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -10,11 +10,9 @@ 1 7 0 - 3 2 1 - @@ -172,10 +170,10 @@ 3.1.6 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + - - - + + + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index bb642c2368..d3b822832f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -33,261 +33,261 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore-tooling 1c22292bc7fca352074d8862cf39fbdb8647f208 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 509fe041d6d740af8122cae870bf58f2c33c38f3 + cad165e731fc0bcc9ab725c718177ebaf0820705 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 509fe041d6d740af8122cae870bf58f2c33c38f3 + cad165e731fc0bcc9ab725c718177ebaf0820705 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 509fe041d6d740af8122cae870bf58f2c33c38f3 + cad165e731fc0bcc9ab725c718177ebaf0820705 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 509fe041d6d740af8122cae870bf58f2c33c38f3 + cad165e731fc0bcc9ab725c718177ebaf0820705 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 509fe041d6d740af8122cae870bf58f2c33c38f3 + cad165e731fc0bcc9ab725c718177ebaf0820705 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 509fe041d6d740af8122cae870bf58f2c33c38f3 + cad165e731fc0bcc9ab725c718177ebaf0820705 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 509fe041d6d740af8122cae870bf58f2c33c38f3 + cad165e731fc0bcc9ab725c718177ebaf0820705 - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde https://dev.azure.com/dnceng/internal/_git/dotnet-corefx @@ -377,25 +377,25 @@ https://github.com/dotnet/corefx 0f7f38c4fd323b26da10cce95f857f77f0f09b48 - - https://dev.azure.com/dnceng/internal/_git/dotnet-core-setup - 3acd9b0cd16596bad450c82be08780875a73c05c + + https://github.com/dotnet/core-setup + 2d163b87b605fd23ceebfb04484e5ec5f2bffc32 - + https://dev.azure.com/dnceng/internal/_git/dotnet-core-setup - 3acd9b0cd16596bad450c82be08780875a73c05c + fcfdef8d6ba770e4d7ba9efefe2591d8c33a1fc6 https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - + https://dev.azure.com/dnceng/internal/_git/dotnet-core-setup - 3acd9b0cd16596bad450c82be08780875a73c05c + fcfdef8d6ba770e4d7ba9efefe2591d8c33a1fc6 @@ -409,13 +409,13 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-corefx - 059a4a19e602494bfbed473dbbb18f2dbfbd0878 + 36b8b8e26a8e2e06e000f59e19910d117bf0025b - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde https://github.com/dotnet/arcade @@ -429,9 +429,9 @@ https://github.com/dotnet/arcade 1a55276ab9d16792cec595ba870df39a9d97d5ca - + https://dev.azure.com/dnceng/internal/_git/dotnet-extensions - be18161fbed286d6fb7a7b1c7999ce70a50cf3eb + 784b0ffaa40779255758ebbb146334da489a4bde https://github.com/dotnet/roslyn diff --git a/eng/Versions.props b/eng/Versions.props index 955550b50a..4b4a752dc0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -67,10 +67,10 @@ 3.4.1-beta4-20127-10 - 3.1.6 - 3.1.6-servicing.20316.4 + 3.1.3 + 3.1.7-servicing.20371.4 3.1.0 - 3.1.6 + 3.1.7 2.1.0 1.1.1 @@ -97,78 +97,78 @@ 4.7.1 4.7.0 - 3.1.1 + 3.1.2 3.2.0 - 3.1.6-servicing.20316.5 - 3.1.6-servicing.20316.5 - 3.1.6-servicing.20316.5 - 3.1.6-servicing.20316.5 - 3.1.6-servicing.20316.5 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6-servicing.20316.5 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6-servicing.20316.5 - 3.1.6 - 3.1.6 - 3.1.6-servicing.20316.5 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6-servicing.20316.5 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6-servicing.20316.5 - 3.1.6 - 3.1.6-servicing.20316.5 - 3.1.6-servicing.20316.5 - 3.1.6 + 3.1.7-servicing.20371.8 + 3.1.7-servicing.20371.8 + 3.1.7-servicing.20371.8 + 3.1.7-servicing.20371.8 + 3.1.7-servicing.20371.8 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7-servicing.20371.8 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7-servicing.20371.8 + 3.1.7 + 3.1.7 + 3.1.7-servicing.20371.8 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7-servicing.20371.8 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7-servicing.20371.8 + 3.1.7 + 3.1.7-servicing.20371.8 + 3.1.7-servicing.20371.8 + 3.1.7 3.1.0-rtm.19565.4 - 3.1.6 + 3.1.7 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 - 3.1.6 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 + 3.1.7 3.1.7 3.1.7 From 9f03b0acffd557a179b28a683c9016f94e500d66 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Sat, 8 Aug 2020 14:18:33 -0700 Subject: [PATCH 06/13] Update branding to 3.1.8 - build targeting pack to pick up NuGet/Home#8599 fix - dotnet/extensions#2750 and #24200 2/2 - requires follow-up after next official extensions build - fake the baseline update - remainder must be done after the 3.1.7 release --- Directory.Build.props | 4 ++-- eng/Baseline.Designer.props | 2 +- eng/Baseline.xml | 4 ++-- eng/Version.Details.xml | 9 +++++---- eng/Versions.props | 5 +++-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 53865f2cfb..0f51f5d311 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -84,10 +84,10 @@ aspnetcore-runtime aspnetcore-targeting-pack - + false false + Condition=" '$(IsTargetingPackBuilding)' == '' AND '$(AspNetCorePatchVersion)' != '8' ">false true diff --git a/eng/Baseline.xml b/eng/Baseline.xml index 650550d179..f04e5b1034 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,7 +4,7 @@ This file contains a list of all the packages and their versions which were rele Update this list when preparing for a new patch. --> - + @@ -87,4 +87,4 @@ Update this list when preparing for a new patch. - \ No newline at end of file + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d3b822832f..ba13e20342 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -381,6 +381,11 @@ https://github.com/dotnet/core-setup 2d163b87b605fd23ceebfb04484e5ec5f2bffc32 + + + https://github.com/dotnet/Extensions + 4e1be2fb546751c773968d7b40ff7f4b62887153 + diff --git a/eng/Versions.props b/eng/Versions.props index 4b4a752dc0..f0543e4a54 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,7 +8,7 @@ 3 1 - 7 + 8 0 3 2 @@ -24,6 +24,7 @@ Servicing $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion) + 3.1.0 false @@ -34,7 +35,7 @@ $(VersionPrefix) - $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).3 + $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).8 0.3.$(AspNetCorePatchVersion) $([MSBuild]::Add(10, $(AspNetCoreMajorVersion))) From 522088b6beb5a11b431b2dea6e2e94f6003d689a Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Sat, 8 Aug 2020 16:23:35 -0700 Subject: [PATCH 07/13] Do not run hostname tests on macOS --- .../TransportTestHelpers/HostNameIsReachableAttribute.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Servers/Kestrel/shared/test/TransportTestHelpers/HostNameIsReachableAttribute.cs b/src/Servers/Kestrel/shared/test/TransportTestHelpers/HostNameIsReachableAttribute.cs index b489a110fb..67dbeed364 100644 --- a/src/Servers/Kestrel/shared/test/TransportTestHelpers/HostNameIsReachableAttribute.cs +++ b/src/Servers/Kestrel/shared/test/TransportTestHelpers/HostNameIsReachableAttribute.cs @@ -4,6 +4,7 @@ using System; using System.Net; using System.Net.Sockets; +using System.Runtime.InteropServices; using System.Threading.Tasks; using Microsoft.AspNetCore.Testing; @@ -30,6 +31,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests private async Task HostNameIsReachable() { + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + // Code below is unreliable on macOS and tests fail on that platform. + return false; + } + try { _hostname = Dns.GetHostName(); From 5d1a8b454cb5f67a913ed1743ed51db1f4d1cb38 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Tue, 11 Aug 2020 10:47:33 -0700 Subject: [PATCH 08/13] Remove internal feeds --- NuGet.config | 7 ------- 1 file changed, 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 4a97f9942a..2323cdac01 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,13 +7,6 @@ - - - - - - - From 8f21d61c089cca3bd76eadf68dfcdc4e318516df Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Tue, 11 Aug 2020 15:02:23 -0700 Subject: [PATCH 09/13] Update to 3.1.107 SDK --- global.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/global.json b/global.json index 023704b7ac..4c34e6afa2 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "sdk": { - "version": "3.1.103" + "version": "3.1.107" }, "tools": { - "dotnet": "3.1.103", + "dotnet": "3.1.107", "runtimes": { "dotnet/x64": [ "$(MicrosoftNETCoreAppInternalPackageVersion)" From 1709e5badbb93b758afa4c8c0d079d800461a821 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Tue, 11 Aug 2020 16:31:09 -0700 Subject: [PATCH 10/13] Update Baseline.* files --- eng/Baseline.Designer.props | 432 ++++++++++++++++++------------------ eng/Baseline.xml | 146 ++++++------ 2 files changed, 289 insertions(+), 289 deletions(-) diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index 6c72f1aa42..c4f0bf31d3 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -16,7 +16,7 @@ - 3.1.6 + 3.1.7 @@ -27,88 +27,88 @@ - 3.1.6 + 3.1.7 - - - + + + - + - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - - + + - 3.1.6 + 3.1.7 - - + + - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 @@ -116,97 +116,97 @@ - 3.1.6 + 3.1.7 - - - + + + - - - + + + - 3.1.6 + 3.1.7 - - + + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - - - + + + - - - + + + - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - - + + - - + + - 3.1.6 + 3.1.7 - + - + - 3.1.6 + 3.1.7 - - - - + + + + - - - - + + + + @@ -253,219 +253,219 @@ - 3.1.6 + 3.1.7 - - + + - 3.1.6 + 3.1.7 - + - + - + - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - + - + - + - 3.1.6 + 3.1.7 - - - - - - + + + + + + - - - - - - + + + + + + - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - - + + - 3.1.6 + 3.1.7 - - + + - - + + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - - + + - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - - - + + + - - - + + + - 3.1.6 + 3.1.7 - + - + - 3.1.6 + 3.1.7 - + - + - 3.1.6 + 3.1.7 - - + + - - + + - 3.1.6 + 3.1.7 - - - + + + - 3.1.6 + 3.1.7 - - + + - 3.1.6 + 3.1.7 @@ -473,239 +473,239 @@ - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - - - + + + - 3.1.6 + 3.1.7 - - - + + + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - + - - + + - 3.1.6 + 3.1.7 - - + + - 3.1.6 + 3.1.7 - - + + - - + + - - - - + + + + - 3.1.6 + 3.1.7 - - + + - - + + - 3.1.6 + 3.1.7 - + - + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - - - - + + + + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - + - 3.1.6 + 3.1.7 - - + + - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - 3.1.6 + 3.1.7 - - - + + + - 3.1.6 + 3.1.7 - - - + + + - - - + + + - 3.1.6 + 3.1.7 - - - + + + - - - + + + \ No newline at end of file diff --git a/eng/Baseline.xml b/eng/Baseline.xml index f04e5b1034..ca3b6217b8 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -7,84 +7,84 @@ Update this list when preparing for a new patch. - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 95386ff08a17ea76b8ecdfc60e5ff9c5ab582e9b Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Tue, 11 Aug 2020 16:34:21 -0700 Subject: [PATCH 11/13] Undo package downgrade --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ba13e20342..7072fce607 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -377,14 +377,14 @@ https://github.com/dotnet/corefx 0f7f38c4fd323b26da10cce95f857f77f0f09b48 - + https://github.com/dotnet/core-setup 2d163b87b605fd23ceebfb04484e5ec5f2bffc32 https://github.com/dotnet/Extensions - 4e1be2fb546751c773968d7b40ff7f4b62887153 + 3acd9b0cd16596bad450c82be08780875a73c05c 3.4.1-beta4-20127-10 - 3.1.3 + 3.1.6 3.1.7-servicing.20371.4 3.1.0 3.1.7 From e35c4a8acc52ee5b259ae2d74e2ae62cdade9552 Mon Sep 17 00:00:00 2001 From: Chris Ross Date: Thu, 13 Aug 2020 08:52:29 -0700 Subject: [PATCH 12/13] Apply suggestions from code review --- Directory.Build.props | 4 ++-- .../TransportTestHelpers/HostNameIsReachableAttribute.cs | 6 ------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index bf28690cfb..bc09f78c3a 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -126,10 +126,10 @@ aspnetcore-runtime aspnetcore-targeting-pack - + false false + Condition=" '$(IsTargetingPackBuilding)' == '' AND '$(AspNetCorePatchVersion)' != '0' ">false true