Skip to content

Commit c3231e2

Browse files
committed
Fix JENKINS-76283: httpRequest ignores default timeout 0 and enforces 5 minutes
When the timeout parameter is not provided or set to 0 (documented as 'no timeout'), httpclient5 was using its default 5-minute timeout instead. This fixes the regression introduced in v1.22 during the httpclient5 migration (PR jenkinsci#197) by explicitly setting timeout to DISABLED when timeout <= 0, restoring the documented behavior.
1 parent d5f8832 commit c3231e2

File tree

1 file changed

+27
-14
lines changed

1 file changed

+27
-14
lines changed

src/main/java/jenkins/plugins/http_request/HttpRequestExecution.java

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -411,20 +411,33 @@ private void configureTimeoutAndSsl(HttpClientBuilder clientBuilder) throws NoSu
411411
connectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
412412
}
413413

414-
//timeout
415-
if (timeout > 0) {
416-
int t = timeout * 1000;
417-
RequestConfig config = RequestConfig.custom()
418-
.setResponseTimeout(t, TimeUnit.MILLISECONDS)
419-
.setConnectionRequestTimeout(t, TimeUnit.MILLISECONDS)
420-
.build();
421-
clientBuilder.setDefaultRequestConfig(config);
422-
423-
ConnectionConfig connectionConfig = ConnectionConfig.custom()
424-
.setConnectTimeout(t, TimeUnit.MILLISECONDS)
425-
.build();
426-
connectionManager.setDefaultConnectionConfig(connectionConfig);
427-
}
414+
//timeout
415+
if (timeout > 0) {
416+
int t = timeout * 1000;
417+
RequestConfig config = RequestConfig.custom()
418+
.setResponseTimeout(t, TimeUnit.MILLISECONDS)
419+
.setConnectionRequestTimeout(t, TimeUnit.MILLISECONDS)
420+
.build();
421+
clientBuilder.setDefaultRequestConfig(config);
422+
423+
ConnectionConfig connectionConfig = ConnectionConfig.custom()
424+
.setConnectTimeout(t, TimeUnit.MILLISECONDS)
425+
.build();
426+
connectionManager.setDefaultConnectionConfig(connectionConfig);
427+
} else {
428+
// timeout is 0 or not provided, meaning "no timeout" per documentation
429+
// Explicitly set to DISABLED to prevent httpclient5 from using its 5-minute default
430+
RequestConfig config = RequestConfig.custom()
431+
.setResponseTimeout(org.apache.hc.core5.util.Timeout.DISABLED)
432+
.setConnectionRequestTimeout(org.apache.hc.core5.util.Timeout.DISABLED)
433+
.build();
434+
clientBuilder.setDefaultRequestConfig(config);
435+
436+
ConnectionConfig connectionConfig = ConnectionConfig.custom()
437+
.setConnectTimeout(org.apache.hc.core5.util.Timeout.DISABLED)
438+
.build();
439+
connectionManager.setDefaultConnectionConfig(connectionConfig);
440+
}
428441

429442
clientBuilder.setConnectionManager(connectionManager);
430443
}

0 commit comments

Comments
 (0)