Improved http timeout handling

Co-authored-by: Qstick <qstick@gmail.com>
pull/1889/head
Bogdan 1 year ago
parent e602862102
commit 32db2af0ea

@ -128,6 +128,17 @@ namespace NzbDrone.Common.Test.Http
response.Content.Should().NotBeNullOrWhiteSpace(); response.Content.Should().NotBeNullOrWhiteSpace();
} }
[Test]
public void should_throw_timeout_request()
{
var request = new HttpRequest($"https://{_httpBinHost}/delay/10");
request.RequestTimeout = new TimeSpan(0, 0, 5);
Assert.Throws<WebException>(() => Subject.Execute(request));
ExceptionVerification.ExpectedErrors(1);
}
[Test] [Test]
public void should_execute_https_get() public void should_execute_https_get()
{ {

@ -107,6 +107,8 @@ namespace NzbDrone.Common.Http.Dispatchers
sw.Start(); sw.Start();
try
{
using var responseMessage = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead, cts.Token); using var responseMessage = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead, cts.Token);
{ {
byte[] data = null; byte[] data = null;
@ -155,6 +157,11 @@ namespace NzbDrone.Common.Http.Dispatchers
return new HttpResponse(request, new HttpHeader(headers), cookieCollection, data, sw.ElapsedMilliseconds, responseMessage.StatusCode, responseMessage.Version); return new HttpResponse(request, new HttpHeader(headers), cookieCollection, data, sw.ElapsedMilliseconds, responseMessage.StatusCode, responseMessage.Version);
} }
} }
catch (OperationCanceledException ex) when (cts.IsCancellationRequested)
{
throw new WebException("Http request timed out", ex.InnerException, WebExceptionStatus.Timeout, null);
}
}
protected virtual System.Net.Http.HttpClient GetClient(HttpUri uri, HttpProxySettings requestProxy) protected virtual System.Net.Http.HttpClient GetClient(HttpUri uri, HttpProxySettings requestProxy)
{ {

Loading…
Cancel
Save