You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2017/11/18 10:29:44 UTC

httpcomponents-client git commit: Replaced socket and connect timeout request parameters with a single connection timeout request parameter. HTTP requests may be executed concurrently over a single HTTP/2 connection and no longer should overwrite connect

Repository: httpcomponents-client
Updated Branches:
  refs/heads/master 47dfbfa22 -> 235348eec


Replaced socket and connect timeout request parameters with a single connection timeout request parameter. HTTP requests may be executed concurrently over a single HTTP/2 connection and no longer should overwrite connection socket timeout


Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/commit/235348ee
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/tree/235348ee
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/diff/235348ee

Branch: refs/heads/master
Commit: 235348eec6e413133092b554e628af510cc9b7d3
Parents: 47dfbfa
Author: Oleg Kalnichevski <ol...@apache.org>
Authored: Sat Nov 18 11:24:17 2017 +0100
Committer: Oleg Kalnichevski <ol...@apache.org>
Committed: Sat Nov 18 11:24:17 2017 +0100

----------------------------------------------------------------------
 .../http/examples/fluent/FluentExecutor.java    |  4 +-
 .../http/examples/fluent/FluentRequests.java    |  3 +-
 .../apache/hc/client5/http/fluent/Request.java  | 19 ++----
 .../async/AbstractHttp1IntegrationTestBase.java |  3 +-
 .../client5/testing/async/TestHttp1Async.java   |  3 +-
 .../testing/async/TestHttp1AsyncRedirects.java  |  3 +-
 .../TestHttp1AsyncStatefulConnManagement.java   |  3 +-
 .../async/TestHttp1ClientAuthentication.java    |  3 +-
 .../client5/testing/async/TestHttp2Async.java   |  3 +-
 .../testing/async/TestHttp2AsyncRedirect.java   |  3 +-
 .../async/TestHttp2ClientAuthentication.java    |  3 +-
 .../testing/sync/LocalServerTestBase.java       |  3 +-
 .../http/examples/ClientConfiguration.java      |  3 +-
 .../hc/client5/http/config/RequestConfig.java   | 71 ++++++--------------
 .../async/InternalHttp2AsyncExecRuntime.java    |  6 +-
 .../async/InternalHttpAsyncExecRuntime.java     |  8 +--
 .../impl/async/MinimalHttp2AsyncClient.java     |  2 +-
 .../http/impl/async/MinimalHttpAsyncClient.java |  4 +-
 .../http/impl/classic/ExecRuntimeImpl.java      |  9 ++-
 .../client5/http/config/TestRequestConfig.java  |  7 +-
 .../http/impl/classic/TestExecRuntimeImpl.java  |  4 +-
 21 files changed, 53 insertions(+), 114 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-fluent/src/examples/org/apache/hc/client5/http/examples/fluent/FluentExecutor.java
----------------------------------------------------------------------
diff --git a/httpclient5-fluent/src/examples/org/apache/hc/client5/http/examples/fluent/FluentExecutor.java b/httpclient5-fluent/src/examples/org/apache/hc/client5/http/examples/fluent/FluentExecutor.java
index c6ccccf..56e3fc9 100644
--- a/httpclient5-fluent/src/examples/org/apache/hc/client5/http/examples/fluent/FluentExecutor.java
+++ b/httpclient5-fluent/src/examples/org/apache/hc/client5/http/examples/fluent/FluentExecutor.java
@@ -52,9 +52,7 @@ public class FluentExecutor {
 
         // Execute a GET with timeout settings and return response content as String.
         executor.execute(Request.Get("http://somehost/")
-                .connectTimeout(Timeout.ofSeconds(1))
-                .socketTimeout(Timeout.ofSeconds(1))
-                ).returnContent().asString();
+                .connectionTimeout(Timeout.ofSeconds(1))).returnContent().asString();
 
         // Execute a POST with the 'expect-continue' handshake, using HTTP/1.1,
         // containing a request body as String and return response content as byte array.

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-fluent/src/examples/org/apache/hc/client5/http/examples/fluent/FluentRequests.java
----------------------------------------------------------------------
diff --git a/httpclient5-fluent/src/examples/org/apache/hc/client5/http/examples/fluent/FluentRequests.java b/httpclient5-fluent/src/examples/org/apache/hc/client5/http/examples/fluent/FluentRequests.java
index 520dd62..4e65679 100644
--- a/httpclient5-fluent/src/examples/org/apache/hc/client5/http/examples/fluent/FluentRequests.java
+++ b/httpclient5-fluent/src/examples/org/apache/hc/client5/http/examples/fluent/FluentRequests.java
@@ -43,8 +43,7 @@ public class FluentRequests {
     public static void main(String[] args)throws Exception {
         // Execute a GET with timeout settings and return response content as String.
         Request.Get("http://somehost/")
-                .connectTimeout(Timeout.ofSeconds(1))
-                .socketTimeout(Timeout.ofSeconds(1))
+                .connectionTimeout(Timeout.ofSeconds(1))
                 .execute().returnContent().asString();
 
         // Execute a POST with the 'expect-continue' handshake, using HTTP/1.1,

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Request.java
----------------------------------------------------------------------
diff --git a/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Request.java b/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Request.java
index 938b4f1..1c0076c 100644
--- a/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Request.java
+++ b/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Request.java
@@ -76,8 +76,7 @@ public class Request {
 
     private final HttpUriRequestBase request;
     private Boolean useExpectContinue;
-    private Timeout socketTmeout;
-    private Timeout connectTimeout;
+    private Timeout connectionTimeout;
     private HttpHost proxy;
 
     private SimpleDateFormat dateFormatter;
@@ -171,11 +170,8 @@ public class Request {
         if (this.useExpectContinue != null) {
             builder.setExpectContinueEnabled(this.useExpectContinue);
         }
-        if (this.socketTmeout != null) {
-            builder.setSocketTimeout(this.socketTmeout);
-        }
-        if (this.connectTimeout != null) {
-            builder.setConnectTimeout(this.connectTimeout);
+        if (this.connectionTimeout != null) {
+            builder.setConnectionTimeout(this.connectionTimeout);
         }
         if (this.proxy != null) {
             builder.setProxy(this.proxy);
@@ -283,13 +279,8 @@ public class Request {
 
     //// HTTP connection parameter operations
 
-    public Request socketTimeout(final Timeout timeout) {
-        this.socketTmeout = timeout;
-        return this;
-    }
-
-    public Request connectTimeout(final Timeout timeout) {
-        this.connectTimeout = timeout;
+    public Request connectionTimeout(final Timeout timeout) {
+        this.connectionTimeout = timeout;
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttp1IntegrationTestBase.java
----------------------------------------------------------------------
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttp1IntegrationTestBase.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttp1IntegrationTestBase.java
index 18dd89e..fc3252b 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttp1IntegrationTestBase.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/AbstractHttp1IntegrationTestBase.java
@@ -90,8 +90,7 @@ public abstract class AbstractHttp1IntegrationTestBase extends AbstractServerTes
         protected void before() throws Throwable {
             clientBuilder = HttpAsyncClientBuilder.create()
                     .setDefaultRequestConfig(RequestConfig.custom()
-                            .setSocketTimeout(TIMEOUT)
-                            .setConnectTimeout(TIMEOUT)
+                            .setConnectionTimeout(TIMEOUT)
                             .setConnectionRequestTimeout(TIMEOUT)
                             .build())
                     .setConnectionManager(connManager);

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Async.java
----------------------------------------------------------------------
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Async.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Async.java
index 506001f..5417292 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Async.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1Async.java
@@ -94,8 +94,7 @@ public class TestHttp1Async extends AbstractHttpAsyncFundamentalsTest<CloseableH
         protected void before() throws Throwable {
             clientBuilder = HttpAsyncClientBuilder.create()
                     .setDefaultRequestConfig(RequestConfig.custom()
-                            .setSocketTimeout(TIMEOUT)
-                            .setConnectTimeout(TIMEOUT)
+                            .setConnectionTimeout(TIMEOUT)
                             .setConnectionRequestTimeout(TIMEOUT)
                             .build())
                     .setConnectionManager(connManager);

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncRedirects.java
----------------------------------------------------------------------
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncRedirects.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncRedirects.java
index 48caa35..10444f2 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncRedirects.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncRedirects.java
@@ -111,8 +111,7 @@ public class TestHttp1AsyncRedirects extends AbstractHttpAsyncRedirectsTest<Clos
         protected void before() throws Throwable {
             clientBuilder = HttpAsyncClientBuilder.create()
                     .setDefaultRequestConfig(RequestConfig.custom()
-                            .setSocketTimeout(TIMEOUT)
-                            .setConnectTimeout(TIMEOUT)
+                            .setConnectionTimeout(TIMEOUT)
                             .setConnectionRequestTimeout(TIMEOUT)
                             .build())
                     .setConnectionManager(connManager);

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncStatefulConnManagement.java
----------------------------------------------------------------------
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncStatefulConnManagement.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncStatefulConnManagement.java
index 7880f6c..1070961 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncStatefulConnManagement.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1AsyncStatefulConnManagement.java
@@ -89,8 +89,7 @@ public class TestHttp1AsyncStatefulConnManagement extends AbstractIntegrationTes
         protected void before() throws Throwable {
             clientBuilder = HttpAsyncClientBuilder.create()
                     .setDefaultRequestConfig(RequestConfig.custom()
-                            .setSocketTimeout(TIMEOUT)
-                            .setConnectTimeout(TIMEOUT)
+                            .setConnectionTimeout(TIMEOUT)
                             .setConnectionRequestTimeout(TIMEOUT)
                             .build())
                     .setConnectionManager(connManager);

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1ClientAuthentication.java
----------------------------------------------------------------------
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1ClientAuthentication.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1ClientAuthentication.java
index e998c43..e9d5fb7 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1ClientAuthentication.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp1ClientAuthentication.java
@@ -106,8 +106,7 @@ public class TestHttp1ClientAuthentication extends AbstractHttpAsyncClientAuthen
         protected void before() throws Throwable {
             clientBuilder = HttpAsyncClientBuilder.create()
                     .setDefaultRequestConfig(RequestConfig.custom()
-                            .setSocketTimeout(TIMEOUT)
-                            .setConnectTimeout(TIMEOUT)
+                            .setConnectionTimeout(TIMEOUT)
                             .setConnectionRequestTimeout(TIMEOUT)
                             .build())
                     .setConnectionManager(connManager);

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2Async.java
----------------------------------------------------------------------
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2Async.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2Async.java
index e64cbdd..ac0ea0b 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2Async.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2Async.java
@@ -62,8 +62,7 @@ public class TestHttp2Async extends AbstractHttpAsyncFundamentalsTest<CloseableH
         protected void before() throws Throwable {
             clientBuilder = Http2AsyncClientBuilder.create()
                     .setDefaultRequestConfig(RequestConfig.custom()
-                            .setSocketTimeout(TIMEOUT)
-                            .setConnectTimeout(TIMEOUT)
+                            .setConnectionTimeout(TIMEOUT)
                             .setConnectionRequestTimeout(TIMEOUT)
                             .build())
                     .setTlsStrategy(new BasicClientTlsStrategy(SSLTestContexts.createClientSSLContext()));

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2AsyncRedirect.java
----------------------------------------------------------------------
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2AsyncRedirect.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2AsyncRedirect.java
index 63011af..417c3da 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2AsyncRedirect.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2AsyncRedirect.java
@@ -62,8 +62,7 @@ public class TestHttp2AsyncRedirect extends AbstractHttpAsyncRedirectsTest<Close
         protected void before() throws Throwable {
             clientBuilder = Http2AsyncClientBuilder.create()
                     .setDefaultRequestConfig(RequestConfig.custom()
-                            .setSocketTimeout(TIMEOUT)
-                            .setConnectTimeout(TIMEOUT)
+                            .setConnectionTimeout(TIMEOUT)
                             .setConnectionRequestTimeout(TIMEOUT)
                             .build())
                     .setTlsStrategy(new H2TlsStrategy(SSLTestContexts.createClientSSLContext()));

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2ClientAuthentication.java
----------------------------------------------------------------------
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2ClientAuthentication.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2ClientAuthentication.java
index 5cb1d80..91bdb5e 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2ClientAuthentication.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/async/TestHttp2ClientAuthentication.java
@@ -66,8 +66,7 @@ public class TestHttp2ClientAuthentication extends AbstractHttpAsyncClientAuthen
         protected void before() throws Throwable {
             clientBuilder = Http2AsyncClientBuilder.create()
                     .setDefaultRequestConfig(RequestConfig.custom()
-                            .setSocketTimeout(TIMEOUT)
-                            .setConnectTimeout(TIMEOUT)
+                            .setConnectionTimeout(TIMEOUT)
                             .setConnectionRequestTimeout(TIMEOUT)
                             .build())
                     .setTlsStrategy(new H2TlsStrategy(SSLTestContexts.createClientSSLContext()));

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/LocalServerTestBase.java
----------------------------------------------------------------------
diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/LocalServerTestBase.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/LocalServerTestBase.java
index 38761fe..5e9da8a 100644
--- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/LocalServerTestBase.java
+++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/sync/LocalServerTestBase.java
@@ -110,8 +110,7 @@ public abstract class LocalServerTestBase {
                     .build());
             clientBuilder = HttpClientBuilder.create()
                     .setDefaultRequestConfig(RequestConfig.custom()
-                        .setSocketTimeout(TIMEOUT)
-                        .setConnectTimeout(TIMEOUT)
+                        .setConnectionTimeout(TIMEOUT)
                         .setConnectionRequestTimeout(TIMEOUT)
                         .build())
                     .setConnectionManager(connManager);

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5/src/examples/org/apache/hc/client5/http/examples/ClientConfiguration.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/examples/org/apache/hc/client5/http/examples/ClientConfiguration.java b/httpclient5/src/examples/org/apache/hc/client5/http/examples/ClientConfiguration.java
index 1868ac4..f9dfc9c 100644
--- a/httpclient5/src/examples/org/apache/hc/client5/http/examples/ClientConfiguration.java
+++ b/httpclient5/src/examples/org/apache/hc/client5/http/examples/ClientConfiguration.java
@@ -212,8 +212,7 @@ public class ClientConfiguration {
             // Request configuration can be overridden at the request level.
             // They will take precedence over the one set at the client level.
             final RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig)
-                    .setSocketTimeout(Timeout.ofSeconds(5))
-                    .setConnectTimeout(Timeout.ofSeconds(5))
+                    .setConnectionTimeout(Timeout.ofSeconds(5))
                     .setConnectionRequestTimeout(Timeout.ofSeconds(5))
                     .setProxy(new HttpHost("myotherproxy", 8080))
                     .build();

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5/src/main/java/org/apache/hc/client5/http/config/RequestConfig.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/config/RequestConfig.java b/httpclient5/src/main/java/org/apache/hc/client5/http/config/RequestConfig.java
index 7b9e8b9..2af0534 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/config/RequestConfig.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/config/RequestConfig.java
@@ -42,8 +42,7 @@ import org.apache.hc.core5.util.Timeout;
 public class RequestConfig implements Cloneable {
 
     private static final Timeout DEFAULT_CONNECTION_REQUEST_TIMEOUT = Timeout.ofMinutes(3);
-    private static final Timeout DEFAULT_CONNECT_TIMEOUT = Timeout.ofMinutes(3);
-    private static final Timeout DEFAULT_SOCKET_TIMEOUT = Timeout.ZERO_MILLISECONDS;
+    private static final Timeout DEFAULT_CONNECTION_TIMEOUT = Timeout.ofMinutes(3);
 
     public static final RequestConfig DEFAULT = new Builder().build();
 
@@ -57,16 +56,14 @@ public class RequestConfig implements Cloneable {
     private final Collection<String> targetPreferredAuthSchemes;
     private final Collection<String> proxyPreferredAuthSchemes;
     private final Timeout connectionRequestTimeout;
-    private final Timeout connectTimeout;
-    private final Timeout socketTimeout;
+    private final Timeout connectionTimeout;
     private final boolean contentCompressionEnabled;
 
     /**
      * Intended for CDI compatibility
     */
     protected RequestConfig() {
-        this(false, null, null, false, false, 0, false, null, null,
-                DEFAULT_CONNECTION_REQUEST_TIMEOUT, DEFAULT_CONNECT_TIMEOUT, DEFAULT_SOCKET_TIMEOUT, false);
+        this(false, null, null, false, false, 0, false, null, null, DEFAULT_CONNECTION_REQUEST_TIMEOUT, DEFAULT_CONNECTION_TIMEOUT, false);
     }
 
     RequestConfig(
@@ -80,8 +77,7 @@ public class RequestConfig implements Cloneable {
             final Collection<String> targetPreferredAuthSchemes,
             final Collection<String> proxyPreferredAuthSchemes,
             final Timeout connectionRequestTimeout,
-            final Timeout connectTimeout,
-            final Timeout socketTimeout,
+            final Timeout connectionTimeout,
             final boolean contentCompressionEnabled) {
         super();
         this.expectContinueEnabled = expectContinueEnabled;
@@ -94,8 +90,7 @@ public class RequestConfig implements Cloneable {
         this.targetPreferredAuthSchemes = targetPreferredAuthSchemes;
         this.proxyPreferredAuthSchemes = proxyPreferredAuthSchemes;
         this.connectionRequestTimeout = connectionRequestTimeout;
-        this.connectTimeout = connectTimeout;
-        this.socketTimeout = socketTimeout;
+        this.connectionTimeout = connectionTimeout;
         this.contentCompressionEnabled = contentCompressionEnabled;
     }
 
@@ -228,7 +223,8 @@ public class RequestConfig implements Cloneable {
     }
 
     /**
-     * Determines the timeout in milliseconds until a connection is established.
+     * Determines the timeout in milliseconds until a new connection is
+     * fully established or established connection transmits a data packet.
      * A timeout value of zero is interpreted as an infinite timeout.
      * <p>
      * A timeout value of zero is interpreted as an infinite timeout.
@@ -237,25 +233,11 @@ public class RequestConfig implements Cloneable {
      * <p>
      * Default: 3 minutes
      * </p>
+     *
+     * @since 5.0
      */
-    public Timeout getConnectTimeout() {
-        return connectTimeout;
-    }
-
-    /**
-     * Defines the socket timeout ({@code SO_TIMEOUT}) in milliseconds,
-     * which is the timeout for waiting for data  or, put differently,
-     * a maximum period inactivity between two consecutive data packets).
-     * <p>
-     * A timeout value of zero is interpreted as an infinite timeout.
-     * A negative value is interpreted as undefined (system default).
-     * </p>
-     * <p>
-     * Default: no timeout.
-     * </p>
-     */
-    public Timeout getSocketTimeout() {
-        return socketTimeout;
+    public Timeout getConnectionTimeout() {
+        return connectionTimeout;
     }
 
     /**
@@ -289,8 +271,7 @@ public class RequestConfig implements Cloneable {
         builder.append(", targetPreferredAuthSchemes=").append(targetPreferredAuthSchemes);
         builder.append(", proxyPreferredAuthSchemes=").append(proxyPreferredAuthSchemes);
         builder.append(", connectionRequestTimeout=").append(connectionRequestTimeout);
-        builder.append(", connectTimeout=").append(connectTimeout);
-        builder.append(", socketTimeout=").append(socketTimeout);
+        builder.append(", connectionTimeout=").append(connectionTimeout);
         builder.append(", contentCompressionEnabled=").append(contentCompressionEnabled);
         builder.append("]");
         return builder.toString();
@@ -312,8 +293,7 @@ public class RequestConfig implements Cloneable {
             .setTargetPreferredAuthSchemes(config.getTargetPreferredAuthSchemes())
             .setProxyPreferredAuthSchemes(config.getProxyPreferredAuthSchemes())
             .setConnectionRequestTimeout(config.getConnectionRequestTimeout())
-            .setConnectTimeout(config.getConnectTimeout())
-            .setSocketTimeout(config.getSocketTimeout())
+            .setConnectionTimeout(config.getConnectionTimeout())
             .setContentCompressionEnabled(config.isContentCompressionEnabled());
     }
 
@@ -329,8 +309,7 @@ public class RequestConfig implements Cloneable {
         private Collection<String> targetPreferredAuthSchemes;
         private Collection<String> proxyPreferredAuthSchemes;
         private Timeout connectionRequestTimeout;
-        private Timeout connectTimeout;
-        private Timeout socketTimeout;
+        private Timeout connectionTimeout;
         private boolean contentCompressionEnabled;
 
         Builder() {
@@ -339,8 +318,7 @@ public class RequestConfig implements Cloneable {
             this.maxRedirects = 50;
             this.authenticationEnabled = true;
             this.connectionRequestTimeout = DEFAULT_CONNECTION_REQUEST_TIMEOUT;
-            this.connectTimeout = DEFAULT_CONNECT_TIMEOUT;
-            this.socketTimeout = DEFAULT_SOCKET_TIMEOUT;
+            this.connectionTimeout = DEFAULT_CONNECTION_TIMEOUT;
             this.contentCompressionEnabled = true;
         }
 
@@ -399,23 +377,13 @@ public class RequestConfig implements Cloneable {
             return this;
         }
 
-        public Builder setConnectTimeout(final Timeout connectTimeout) {
-            this.connectTimeout = connectTimeout;
+        public Builder setConnectionTimeout(final Timeout connectionTimeout) {
+            this.connectionTimeout = connectionTimeout;
             return this;
         }
 
         public Builder setConnectTimeout(final long connectTimeout, final TimeUnit timeUnit) {
-            this.connectTimeout = Timeout.of(connectTimeout, timeUnit);
-            return this;
-        }
-
-        public Builder setSocketTimeout(final Timeout socketTimeout) {
-            this.socketTimeout = socketTimeout;
-            return this;
-        }
-
-        public Builder setSocketTimeout(final long socketTimeout, final TimeUnit timeUnit) {
-            this.socketTimeout = Timeout.of(socketTimeout, timeUnit);
+            this.connectionTimeout = Timeout.of(connectTimeout, timeUnit);
             return this;
         }
 
@@ -436,8 +404,7 @@ public class RequestConfig implements Cloneable {
                     targetPreferredAuthSchemes,
                     proxyPreferredAuthSchemes,
                     connectionRequestTimeout != null ? connectionRequestTimeout : DEFAULT_CONNECTION_REQUEST_TIMEOUT,
-                    connectTimeout != null ? connectTimeout : DEFAULT_CONNECT_TIMEOUT,
-                    socketTimeout != null ? socketTimeout : DEFAULT_SOCKET_TIMEOUT,
+                    connectionTimeout != null ? connectionTimeout : DEFAULT_CONNECTION_TIMEOUT,
                     contentCompressionEnabled);
         }
 

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttp2AsyncExecRuntime.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttp2AsyncExecRuntime.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttp2AsyncExecRuntime.java
index 624dafe..0c4176c 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttp2AsyncExecRuntime.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttp2AsyncExecRuntime.java
@@ -73,7 +73,7 @@ class InternalHttp2AsyncExecRuntime implements AsyncExecRuntime {
         if (sessionRef.get() == null) {
             final HttpHost target = route.getTargetHost();
             final RequestConfig requestConfig = context.getRequestConfig();
-            connPool.getSession(target, requestConfig.getConnectTimeout(), new FutureCallback<IOSession>() {
+            connPool.getSession(target, requestConfig.getConnectionTimeout(), new FutureCallback<IOSession>() {
 
                 @Override
                 public void completed(final IOSession ioSession) {
@@ -153,7 +153,7 @@ class InternalHttp2AsyncExecRuntime implements AsyncExecRuntime {
         } else {
             final HttpHost target = endpoint.target;
             final RequestConfig requestConfig = context.getRequestConfig();
-            connPool.getSession(target, requestConfig.getConnectTimeout(), new FutureCallback<IOSession>() {
+            connPool.getSession(target, requestConfig.getConnectionTimeout(), new FutureCallback<IOSession>() {
 
                 @Override
                 public void completed(final IOSession ioSession) {
@@ -194,7 +194,7 @@ class InternalHttp2AsyncExecRuntime implements AsyncExecRuntime {
         } else {
             final HttpHost target = endpoint.target;
             final RequestConfig requestConfig = context.getRequestConfig();
-            connPool.getSession(target, requestConfig.getConnectTimeout(), new FutureCallback<IOSession>() {
+            connPool.getSession(target, requestConfig.getConnectionTimeout(), new FutureCallback<IOSession>() {
 
                 @Override
                 public void completed(final IOSession ioSession) {

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttpAsyncExecRuntime.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttpAsyncExecRuntime.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttpAsyncExecRuntime.java
index 23ed986..e7566c4 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttpAsyncExecRuntime.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalHttpAsyncExecRuntime.java
@@ -183,19 +183,19 @@ class InternalHttpAsyncExecRuntime implements AsyncExecRuntime {
             callback.completed(this);
         } else {
             final RequestConfig requestConfig = context.getRequestConfig();
+            final TimeValue timeout = requestConfig.getConnectionTimeout();
             manager.connect(
                     endpoint,
                     connectionInitiator,
-                    requestConfig.getConnectTimeout(),
+                    timeout,
                     versionPolicy,
                     context,
                     new FutureCallback<AsyncConnectionEndpoint>() {
 
                         @Override
                         public void completed(final AsyncConnectionEndpoint endpoint) {
-                            final TimeValue socketTimeout = requestConfig.getSocketTimeout();
-                            if (TimeValue.isPositive(socketTimeout)) {
-                                endpoint.setSocketTimeout(socketTimeout.toMillisIntBound());
+                            if (TimeValue.isPositive(timeout)) {
+                                endpoint.setSocketTimeout(timeout.toMillisIntBound());
                             }
                             callback.completed(InternalHttpAsyncExecRuntime.this);
                         }

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttp2AsyncClient.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttp2AsyncClient.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttp2AsyncClient.java
index 3871e88..4347e3f 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttp2AsyncClient.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttp2AsyncClient.java
@@ -133,7 +133,7 @@ public final class MinimalHttp2AsyncClient extends AbstractMinimalHttpAsyncClien
                     } else {
                         requestConfig = clientContext.getRequestConfig();
                     }
-                    final Timeout connectTimeout = requestConfig.getConnectTimeout();
+                    final Timeout connectTimeout = requestConfig.getConnectionTimeout();
                     final HttpHost target = new HttpHost(request.getAuthority(), request.getScheme());
 
                     final Future<IOSession> sessionFuture = connPool.getSession(target, connectTimeout, new FutureCallback<IOSession>() {

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttpAsyncClient.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttpAsyncClient.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttpAsyncClient.java
index 54a3e66..35b1fce 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttpAsyncClient.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/MinimalHttpAsyncClient.java
@@ -180,7 +180,7 @@ public final class MinimalHttpAsyncClient extends AbstractMinimalHttpAsyncClient
         final HttpClientContext clientContext = HttpClientContext.adapt(context);
         final RequestConfig requestConfig = clientContext.getRequestConfig();
         final BasicFuture<AsyncClientEndpoint> future = new BasicFuture<>(callback);
-        leaseEndpoint(host, requestConfig.getConnectTimeout(), clientContext, new FutureCallback<AsyncConnectionEndpoint>() {
+        leaseEndpoint(host, requestConfig.getConnectionTimeout(), clientContext, new FutureCallback<AsyncConnectionEndpoint>() {
 
             @Override
             public void completed(final AsyncConnectionEndpoint result) {
@@ -225,7 +225,7 @@ public final class MinimalHttpAsyncClient extends AbstractMinimalHttpAsyncClient
                     } else {
                         requestConfig = clientContext.getRequestConfig();
                     }
-                    final Timeout connectTimeout = requestConfig.getConnectTimeout();
+                    final Timeout connectTimeout = requestConfig.getConnectionTimeout();
                     final HttpHost target = new HttpHost(request.getAuthority(), request.getScheme());
 
                     final Future<AsyncConnectionEndpoint> leaseFuture = leaseEndpoint(target, connectTimeout, clientContext,

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ExecRuntimeImpl.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ExecRuntimeImpl.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ExecRuntimeImpl.java
index 75e876e..86c8f3a 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ExecRuntimeImpl.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ExecRuntimeImpl.java
@@ -149,11 +149,10 @@ class ExecRuntimeImpl implements ExecRuntime, Cancellable {
             }
         }
         final RequestConfig requestConfig = context.getRequestConfig();
-        final TimeValue connectTimeout = requestConfig.getConnectTimeout();
-        manager.connect(endpoint, connectTimeout, context);
-        final TimeValue socketTimeout = requestConfig.getSocketTimeout();
-        if (socketTimeout.getDuration() >= 0) {
-            endpoint.setSocketTimeout(socketTimeout.toMillisIntBound());
+        final TimeValue timeout = requestConfig.getConnectionTimeout();
+        manager.connect(endpoint, timeout, context);
+        if (TimeValue.isPositive(timeout)) {
+            endpoint.setSocketTimeout(timeout.toMillisIntBound());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5/src/test/java/org/apache/hc/client5/http/config/TestRequestConfig.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/config/TestRequestConfig.java b/httpclient5/src/test/java/org/apache/hc/client5/http/config/TestRequestConfig.java
index 487b385..02060a3 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/config/TestRequestConfig.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/config/TestRequestConfig.java
@@ -47,8 +47,7 @@ public class TestRequestConfig {
     @Test
     public void testDefaults() {
         final RequestConfig config = RequestConfig.DEFAULT;
-        Assert.assertEquals(Timeout.ZERO_MILLISECONDS, config.getSocketTimeout());
-        Assert.assertEquals(Timeout.ofMinutes(3), config.getConnectTimeout());
+        Assert.assertEquals(Timeout.ofMinutes(3), config.getConnectionTimeout());
         Assert.assertEquals(Timeout.ofMinutes(3), config.getConnectionRequestTimeout());
         Assert.assertEquals(false, config.isExpectContinueEnabled());
         Assert.assertEquals(true, config.isAuthenticationEnabled());
@@ -65,7 +64,6 @@ public class TestRequestConfig {
     @Test
     public void testBuildAndCopy() throws Exception {
         final RequestConfig config0 = RequestConfig.custom()
-                .setSocketTimeout(22, TimeUnit.MILLISECONDS)
                 .setConnectTimeout(33, TimeUnit.MILLISECONDS)
                 .setConnectionRequestTimeout(44, TimeUnit.MILLISECONDS)
                 .setExpectContinueEnabled(true)
@@ -80,8 +78,7 @@ public class TestRequestConfig {
                 .setContentCompressionEnabled(false)
                 .build();
         final RequestConfig config = RequestConfig.copy(config0).build();
-        Assert.assertEquals(TimeValue.ofMillis(22), config.getSocketTimeout());
-        Assert.assertEquals(TimeValue.ofMillis(33), config.getConnectTimeout());
+        Assert.assertEquals(TimeValue.ofMillis(33), config.getConnectionTimeout());
         Assert.assertEquals(TimeValue.ofMillis(44), config.getConnectionRequestTimeout());
         Assert.assertEquals(true, config.isExpectContinueEnabled());
         Assert.assertEquals(false, config.isAuthenticationEnabled());

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/235348ee/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestExecRuntimeImpl.java
----------------------------------------------------------------------
diff --git a/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestExecRuntimeImpl.java b/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestExecRuntimeImpl.java
index 5b6cf35..07cc652 100644
--- a/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestExecRuntimeImpl.java
+++ b/httpclient5/src/test/java/org/apache/hc/client5/http/impl/classic/TestExecRuntimeImpl.java
@@ -83,7 +83,6 @@ public class TestExecRuntimeImpl {
         final HttpClientContext context = HttpClientContext.create();
         final RequestConfig config = RequestConfig.custom()
                 .setConnectTimeout(123, TimeUnit.MILLISECONDS)
-                .setSocketTimeout(234, TimeUnit.MILLISECONDS)
                 .setConnectionRequestTimeout(345, TimeUnit.MILLISECONDS)
                 .build();
         context.setRequestConfig(config);
@@ -261,7 +260,6 @@ public class TestExecRuntimeImpl {
         final HttpClientContext context = HttpClientContext.create();
         final RequestConfig config = RequestConfig.custom()
                 .setConnectTimeout(123, TimeUnit.MILLISECONDS)
-                .setSocketTimeout(234, TimeUnit.MILLISECONDS)
                 .setConnectionRequestTimeout(345, TimeUnit.MILLISECONDS)
                 .build();
         context.setRequestConfig(config);
@@ -279,7 +277,7 @@ public class TestExecRuntimeImpl {
         execRuntime.connect(context);
 
         Mockito.verify(mgr).connect(connectionEndpoint, TimeValue.ofMillis(123), context);
-        Mockito.verify(connectionEndpoint).setSocketTimeout(234);
+        Mockito.verify(connectionEndpoint).setSocketTimeout(123);
     }
 
     @Test