diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/HttpAsyncClients.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/HttpAsyncClients.java index dab74fd04..025f82944 100644 --- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/HttpAsyncClients.java +++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/HttpAsyncClients.java @@ -28,7 +28,9 @@ package org.apache.hc.client5.http.impl.async; import org.apache.hc.client5.http.DnsResolver; +import org.apache.hc.client5.http.SchemePortResolver; import org.apache.hc.client5.http.SystemDefaultDnsResolver; +import org.apache.hc.client5.http.impl.DefaultSchemePortResolver; import org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManagerBuilder; import org.apache.hc.client5.http.nio.AsyncClientConnectionManager; import org.apache.hc.client5.http.ssl.H2TlsStrategy; @@ -127,7 +129,8 @@ private static MinimalHttpAsyncClient createMinimalHttpAsyncClientImpl( final AsyncPushConsumerRegistry pushConsumerRegistry, final HttpVersionPolicy versionPolicy, final IOReactorConfig ioReactorConfig, - final AsyncClientConnectionManager connmgr) { + final AsyncClientConnectionManager connmgr, + final SchemePortResolver schemePortResolver) { return new MinimalHttpAsyncClient( eventHandlerFactory, pushConsumerRegistry, @@ -135,7 +138,8 @@ private static MinimalHttpAsyncClient createMinimalHttpAsyncClientImpl( ioReactorConfig, new DefaultThreadFactory("httpclient-main", true), new DefaultThreadFactory("httpclient-dispatch", true), - connmgr); + connmgr, + schemePortResolver); } /** @@ -169,7 +173,8 @@ public AsyncPushConsumer create(final HttpRequest request, final HttpContext con pushConsumerRegistry, versionPolicy, ioReactorConfig, - connmgr); + connmgr, + DefaultSchemePortResolver.INSTANCE); } /** 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 684b03778..09a54b6e8 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 @@ -35,14 +35,17 @@ import java.util.concurrent.atomic.AtomicInteger; import org.apache.hc.client5.http.HttpRoute; +import org.apache.hc.client5.http.SchemePortResolver; import org.apache.hc.client5.http.config.Configurable; import org.apache.hc.client5.http.config.RequestConfig; import org.apache.hc.client5.http.impl.ConnPoolSupport; +import org.apache.hc.client5.http.impl.DefaultSchemePortResolver; import org.apache.hc.client5.http.impl.ExecSupport; import org.apache.hc.client5.http.impl.classic.RequestFailedException; import org.apache.hc.client5.http.nio.AsyncClientConnectionManager; import org.apache.hc.client5.http.nio.AsyncConnectionEndpoint; import org.apache.hc.client5.http.protocol.HttpClientContext; +import org.apache.hc.client5.http.routing.RoutingSupport; import org.apache.hc.core5.concurrent.BasicFuture; import org.apache.hc.core5.concurrent.ComplexFuture; import org.apache.hc.core5.concurrent.FutureCallback; @@ -76,6 +79,7 @@ public final class MinimalHttpAsyncClient extends AbstractMinimalHttpAsyncClientBase { private final AsyncClientConnectionManager connmgr; + private final SchemePortResolver schemePortResolver; private final HttpVersionPolicy versionPolicy; MinimalHttpAsyncClient( @@ -85,7 +89,8 @@ public final class MinimalHttpAsyncClient extends AbstractMinimalHttpAsyncClient final IOReactorConfig reactorConfig, final ThreadFactory threadFactory, final ThreadFactory workerThreadFactory, - final AsyncClientConnectionManager connmgr) { + final AsyncClientConnectionManager connmgr, + final SchemePortResolver schemePortResolver) { super(new DefaultConnectingIOReactor( eventHandlerFactory, reactorConfig, @@ -102,8 +107,9 @@ public void execute(final IOSession ioSession) { }), pushConsumerRegistry, threadFactory); - this.versionPolicy = versionPolicy != null ? versionPolicy : HttpVersionPolicy.NEGOTIATE; this.connmgr = connmgr; + this.schemePortResolver = schemePortResolver != null ? schemePortResolver : DefaultSchemePortResolver.INSTANCE; + this.versionPolicy = versionPolicy != null ? versionPolicy : HttpVersionPolicy.NEGOTIATE; } private Future leaseEndpoint( @@ -111,9 +117,10 @@ private Future leaseEndpoint( final Timeout connectTimeout, final HttpClientContext clientContext, final FutureCallback callback) { + final HttpRoute route = new HttpRoute(RoutingSupport.normalize(host, schemePortResolver)); final ComplexFuture resultFuture = new ComplexFuture<>(callback); final Future leaseFuture = connmgr.lease( - new HttpRoute(host), null, connectTimeout, + route, null, connectTimeout, new FutureCallback() { @Override