Complete the reader in Dispose (#12430)

- This should avoid issues about completing while still reading.
- Dispose the HttpResponseMessage in some tests that use ResponseHeadersRead);
This commit is contained in:
David Fowler 2019-07-22 09:23:22 -07:00 committed by GitHub
parent 077df0e3ca
commit f8c22859a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 3 deletions

View File

@ -87,7 +87,6 @@ namespace Microsoft.AspNetCore.TestHost
if (result.Buffer.IsEmpty && result.IsCompleted) if (result.Buffer.IsEmpty && result.IsCompleted)
{ {
_pipe.Reader.Complete();
_readComplete(); _readComplete();
_readerComplete = true; _readerComplete = true;
return 0; return 0;
@ -128,7 +127,6 @@ namespace Microsoft.AspNetCore.TestHost
_aborted = true; _aborted = true;
_abortException = innerException; _abortException = innerException;
_pipe.Reader.CancelPendingRead(); _pipe.Reader.CancelPendingRead();
_pipe.Reader.Complete();
} }
private void CheckAborted() private void CheckAborted()
@ -145,6 +143,9 @@ namespace Microsoft.AspNetCore.TestHost
{ {
_abortRequest(); _abortRequest();
} }
_pipe.Reader.Complete();
base.Dispose(disposing); base.Dispose(disposing);
} }
} }

View File

@ -86,7 +86,7 @@ namespace Microsoft.AspNetCore.TestHost
}); });
var client = host.GetTestServer().CreateClient(); var client = host.GetTestServer().CreateClient();
var response = await client.GetAsync("/", HttpCompletionOption.ResponseHeadersRead); using var response = await client.GetAsync("/", HttpCompletionOption.ResponseHeadersRead);
responseReceived.SetResult(0); responseReceived.SetResult(0);
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
var ex = await Assert.ThrowsAsync<HttpRequestException>(() => response.Content.ReadAsByteArrayAsync()); var ex = await Assert.ThrowsAsync<HttpRequestException>(() => response.Content.ReadAsByteArrayAsync());