@@ -74,7 +74,14 @@ final class RequestRewritingClient implements HttpClient {
7474 // allow Java users to configure max redirects the same way they would Java's default HTTP
7575 // client.
7676 var maxRedirectProp = System .getProperty ("http.maxRedirects" );
77- MAX_HTTP_REDIRECTS = maxRedirectProp != null ? Integer .parseInt (maxRedirectProp ) : 20 ;
77+ var maxRedirects = 20 ;
78+ if (maxRedirectProp != null ) {
79+ try {
80+ maxRedirects = Integer .parseInt (maxRedirectProp );
81+ } catch (NumberFormatException ignored ) {
82+ }
83+ }
84+ MAX_HTTP_REDIRECTS = maxRedirects ;
7885 }
7986
8087 RequestRewritingClient (
@@ -109,7 +116,7 @@ private <T> HttpResponse<T> doSend(
109116 httpRequestChecker .check (currentRequestUri );
110117 var response = delegate .send (currentRequest , responseBodyHandler , httpRequestChecker );
111118 if (HttpUtils .isRedirectStatusCode (response .statusCode ())) {
112- if (redirectCount > MAX_HTTP_REDIRECTS ) {
119+ if (redirectCount >= MAX_HTTP_REDIRECTS ) {
113120 throw new HttpClientException (ErrorMessages .create ("httpTooManyRedirects" ));
114121 }
115122 var location =
@@ -179,7 +186,7 @@ private HttpRequest rewriteRequest(HttpRequest original, URI newUri) {
179186 .map ()
180187 .forEach ((name , values ) -> values .forEach (value -> builder .header (name , value )));
181188 var isUserAgentSet = false ;
182- for (var header : this .getHeaders (original . uri () )) {
189+ for (var header : this .getHeaders (newUri )) {
183190 var headerName = header .getFirst ();
184191 isUserAgentSet = isUserAgentSet || headerName .equalsIgnoreCase ("user-agent" );
185192 builder .header (header .getFirst (), header .getSecond ());
0 commit comments