From ada3bdf45d6d7a72dedf4dfa2e05cdc119e4f40b Mon Sep 17 00:00:00 2001 From: Michiel van Wessem Date: Wed, 8 Apr 2020 09:50:43 -0700 Subject: [PATCH] Fix max redirect count (#20428) Without this change, RedirectHandler always follows MaxRedirects + 1. If MaxRedirects was initially set to 1, the body of the while statement is executed twice. This defect expresses itself when calling WebApplicationFactory.CreateClient() with WebApplicationFactoryClientOptions.MaxAutomaticRedirections >= 1 and .AllowAutoRedirects = true in integration tests. --- src/Mvc/Mvc.Testing/src/Handlers/RedirectHandler.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mvc/Mvc.Testing/src/Handlers/RedirectHandler.cs b/src/Mvc/Mvc.Testing/src/Handlers/RedirectHandler.cs index 1be8dfa4fc..2ab8014948 100644 --- a/src/Mvc/Mvc.Testing/src/Handlers/RedirectHandler.cs +++ b/src/Mvc/Mvc.Testing/src/Handlers/RedirectHandler.cs @@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Mvc.Testing.Handlers var originalRequestContent = HasBody(request) ? await DuplicateRequestContent(request) : null; CopyRequestHeaders(request.Headers, redirectRequest.Headers); var response = await base.SendAsync(request, cancellationToken); - while (IsRedirect(response) && remainingRedirects >= 0) + while (IsRedirect(response) && remainingRedirects > 0) { remainingRedirects--; UpdateRedirectRequest(response, redirectRequest, originalRequestContent); @@ -168,4 +168,4 @@ namespace Microsoft.AspNetCore.Mvc.Testing.Handlers response.StatusCode == HttpStatusCode.RedirectKeepVerb || (int)response.StatusCode == 308; } -} \ No newline at end of file +}