diff --git a/spring-web/src/main/java/org/springframework/http/client/reactive/JdkClientHttpConnector.java b/spring-web/src/main/java/org/springframework/http/client/reactive/JdkClientHttpConnector.java index 5ab354b41ba..35e86847ec8 100644 --- a/spring-web/src/main/java/org/springframework/http/client/reactive/JdkClientHttpConnector.java +++ b/spring-web/src/main/java/org/springframework/http/client/reactive/JdkClientHttpConnector.java @@ -101,13 +101,14 @@ public class JdkClientHttpConnector implements ClientHttpConnector { /** * Set the underlying {@code HttpClient} read timeout as a {@code Duration}. + * A timeout value of 0 specifies an infinite timeout. *
Default is the system's default timeout.
* @since 6.2
* @see java.net.http.HttpRequest.Builder#timeout
*/
public void setReadTimeout(Duration readTimeout) {
Assert.notNull(readTimeout, "readTimeout is required");
- this.readTimeout = readTimeout;
+ this.readTimeout = (Duration.ZERO.equals(readTimeout) ? null : readTimeout);
}
/**
diff --git a/spring-web/src/test/java/org/springframework/http/client/reactive/ClientHttpConnectorTests.java b/spring-web/src/test/java/org/springframework/http/client/reactive/ClientHttpConnectorTests.java
index 1a5d3411ada..e99bfcea905 100644
--- a/spring-web/src/test/java/org/springframework/http/client/reactive/ClientHttpConnectorTests.java
+++ b/spring-web/src/test/java/org/springframework/http/client/reactive/ClientHttpConnectorTests.java
@@ -241,6 +241,19 @@ class ClientHttpConnectorTests {
}
+ @Test
+ void readTimeoutZeroWithJdk() {
+ JdkClientHttpConnector connector = new JdkClientHttpConnector();
+ connector.setReadTimeout(Duration.ZERO);
+
+ prepareResponse(builder -> builder.code(200));
+ Mono