Skip to content

Commit 57d5a13

Browse files
committed
HTTPCLIENT-2363: ensure requests have a scheme and an authority populated before they get committed to the execution pipeline
1 parent c40c1f0 commit 57d5a13

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

Diff for: httpclient5/src/main/java/org/apache/hc/client5/http/impl/async/InternalAbstractHttpAsyncClient.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import org.apache.hc.core5.http.support.BasicRequestBuilder;
7676
import org.apache.hc.core5.io.CloseMode;
7777
import org.apache.hc.core5.io.ModalCloseable;
78+
import org.apache.hc.core5.net.URIAuthority;
7879
import org.apache.hc.core5.reactor.DefaultConnectingIOReactor;
7980
import org.apache.hc.core5.util.TimeValue;
8081
import org.slf4j.Logger;
@@ -193,7 +194,7 @@ private void setupContext(final HttpClientContext context) {
193194

194195
@Override
195196
protected <T> Future<T> doExecute(
196-
final HttpHost httpHost,
197+
final HttpHost target,
197198
final AsyncRequestProducer requestProducer,
198199
final AsyncResponseConsumer<T> responseConsumer,
199200
final HandlerFactory<AsyncPushConsumer> pushHandlerFactory,
@@ -217,8 +218,15 @@ protected <T> Future<T> doExecute(
217218

218219
setupContext(clientContext);
219220

221+
final HttpHost resolvedTarget = target != null ? target : RoutingSupport.determineHost(request);
222+
if (request.getScheme() == null) {
223+
request.setScheme(resolvedTarget.getSchemeName());
224+
}
225+
if (request.getAuthority() == null) {
226+
request.setAuthority(new URIAuthority(resolvedTarget));
227+
}
220228
final HttpRoute route = determineRoute(
221-
httpHost != null ? httpHost : RoutingSupport.determineHost(request),
229+
resolvedTarget,
222230
request,
223231
clientContext);
224232
final String exchangeId = ExecSupport.getNextExchangeId();

Diff for: httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/InternalHttpClient.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import org.apache.hc.core5.http.protocol.HttpContext;
6464
import org.apache.hc.core5.io.CloseMode;
6565
import org.apache.hc.core5.io.ModalCloseable;
66+
import org.apache.hc.core5.net.URIAuthority;
6667
import org.apache.hc.core5.util.Args;
6768
import org.slf4j.Logger;
6869
import org.slf4j.LoggerFactory;
@@ -158,8 +159,16 @@ protected CloseableHttpResponse doExecute(
158159
localcontext.setRequestConfig(config);
159160
}
160161
setupContext(localcontext);
162+
163+
final HttpHost resolvedTarget = target != null ? target : RoutingSupport.determineHost(request);
164+
if (request.getScheme() == null) {
165+
request.setScheme(resolvedTarget.getSchemeName());
166+
}
167+
if (request.getAuthority() == null) {
168+
request.setAuthority(new URIAuthority(resolvedTarget));
169+
}
161170
final HttpRoute route = determineRoute(
162-
target != null ? target : RoutingSupport.determineHost(request),
171+
resolvedTarget,
163172
request,
164173
localcontext);
165174
final String exchangeId = ExecSupport.getNextExchangeId();

0 commit comments

Comments
 (0)