From a85653b716ac101eb4ca47a91369c8640393da41 Mon Sep 17 00:00:00 2001 From: Qstick Date: Wed, 17 Mar 2021 21:28:13 -0400 Subject: [PATCH] Fixed: Suppress HTTP Errors on initial indexer call until after re-auth attempt --- .../Cardigann/CardigannRequestGenerator.cs | 1 - src/NzbDrone.Core/Indexers/HttpIndexerBase.cs | 21 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannRequestGenerator.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannRequestGenerator.cs index cd98c168c..072bc95f7 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannRequestGenerator.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannRequestGenerator.cs @@ -889,7 +889,6 @@ namespace NzbDrone.Core.Indexers.Cardigann } request.HttpRequest.Method = method; - request.HttpRequest.SuppressHttpError = true; yield return request; } diff --git a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs index 85e7663e2..00c7b7a0b 100644 --- a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs +++ b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs @@ -390,6 +390,11 @@ namespace NzbDrone.Core.Indexers protected virtual bool CheckIfLoginNeeded(HttpResponse httpResponse) { + if (httpResponse.StatusCode == HttpStatusCode.Unauthorized) + { + return true; + } + return false; } @@ -425,6 +430,7 @@ namespace NzbDrone.Core.Indexers var stopWatch = Stopwatch.StartNew(); + request.HttpRequest.SuppressHttpError = true; var response = _httpClient.Execute(request.HttpRequest); stopWatch.Stop(); @@ -448,6 +454,21 @@ namespace NzbDrone.Core.Indexers response = _httpClient.Execute(request.HttpRequest); } + // Throw any other http error we get after attempting auth + if (response.HasHttpError) + { + _logger.Warn("HTTP Error - {0}", response); + + if ((int)response.StatusCode == 429) + { + throw new TooManyRequestsException(request.HttpRequest, response); + } + else + { + throw new HttpException(request.HttpRequest, response); + } + } + UpdateCookies(Cookies, DateTime.Now + TimeSpan.FromDays(30)); return new IndexerResponse(request, response, stopWatch.ElapsedMilliseconds);