Skip to content

Commit b1adea2

Browse files
committed
Touch ups
1 parent 5967a95 commit b1adea2

2 files changed

Lines changed: 11 additions & 4 deletions

File tree

pkl-core/src/main/java/org/pkl/core/http/RequestRewritingClient.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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());

pkl-core/src/test/kotlin/org/pkl/core/http/HttpClientTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ class HttpClientTest {
184184
@Test
185185
fun `respects configured rewrites across redirects`() {
186186
stubFor(get(urlEqualTo("/foo.pkl")).willReturn(permanentRedirect("/orig/bar.pkl")))
187-
stubFor(get(urlEqualTo("/rewritten/baz.pkl")).willReturn(ok()))
187+
stubFor(get(urlEqualTo("/rewritten/bar.pkl")).willReturn(ok()))
188188

189189
val client =
190190
HttpClient.builder()

0 commit comments

Comments
 (0)