Skip to content

Commit bed9c65

Browse files
committed
Pass scheme name to #create method of DetachedSocketFactory
1 parent daaa08f commit bed9c65

File tree

5 files changed

+26
-19
lines changed

5 files changed

+26
-19
lines changed

httpclient5/src/main/java/org/apache/hc/client5/http/impl/io/DefaultHttpClientConnectionOperator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ public void connect(
178178
if (LOG.isDebugEnabled()) {
179179
LOG.debug("{} connecting {}->{} ({})", endpointHost, localAddress, remoteAddress, connectTimeout);
180180
}
181-
final Socket socket = detachedSocketFactory.create(socksProxy);
181+
final Socket socket = detachedSocketFactory.create(endpointHost.getSchemeName(), socksProxy);
182182
try {
183183
// Always bind to the local address if it's provided.
184184
if (localAddress != null) {

httpclient5/src/main/java/org/apache/hc/client5/http/io/DetachedSocketFactory.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,11 @@ public interface DetachedSocketFactory {
4444

4545
Socket create(Proxy proxy) throws IOException;
4646

47+
/**
48+
* @since 5.5
49+
*/
50+
default Socket create(String schemeName, Proxy proxy) throws IOException {
51+
return create(proxy);
52+
}
53+
4754
}

httpclient5/src/test/java/org/apache/hc/client5/http/impl/io/TestBasicHttpClientConnectionManager.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ void testTargetConnect() throws Exception {
387387

388388
Mockito.when(dnsResolver.resolve("somehost", 8443)).thenReturn(Collections.singletonList(new InetSocketAddress(remote, 8443)));
389389
Mockito.when(schemePortResolver.resolve(target.getSchemeName(), target)).thenReturn(8443);
390-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
390+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
391391

392392
Mockito.when(tlsSocketStrategyLookup.lookup("https")).thenReturn(tlsSocketStrategy);
393393
Mockito.when(tlsSocketStrategy.upgrade(
@@ -401,15 +401,15 @@ void testTargetConnect() throws Exception {
401401

402402
Mockito.verify(dnsResolver, Mockito.times(1)).resolve("somehost", 8443);
403403
Mockito.verify(schemePortResolver, Mockito.times(1)).resolve(target.getSchemeName(), target);
404-
Mockito.verify(detachedSocketFactory, Mockito.times(1)).create(null);
404+
Mockito.verify(detachedSocketFactory, Mockito.times(1)).create("https", null);
405405
Mockito.verify(socket, Mockito.times(1)).connect(new InetSocketAddress(remote, 8443), 234);
406406
Mockito.verify(tlsSocketStrategy).upgrade(socket, "somehost", 443, tlsConfig, context);
407407

408408
mgr.connect(endpoint1, TimeValue.ofMilliseconds(123), context);
409409

410410
Mockito.verify(dnsResolver, Mockito.times(2)).resolve("somehost", 8443);
411411
Mockito.verify(schemePortResolver, Mockito.times(2)).resolve(target.getSchemeName(), target);
412-
Mockito.verify(detachedSocketFactory, Mockito.times(2)).create(null);
412+
Mockito.verify(detachedSocketFactory, Mockito.times(2)).create("https", null);
413413
Mockito.verify(socket, Mockito.times(1)).connect(new InetSocketAddress(remote, 8443), 123);
414414
Mockito.verify(tlsSocketStrategy, Mockito.times(2)).upgrade(socket, "somehost", 443, tlsConfig, context);
415415
}
@@ -446,13 +446,13 @@ void testProxyConnectAndUpgrade() throws Exception {
446446
Mockito.when(schemePortResolver.resolve(proxy.getSchemeName(), proxy)).thenReturn(8080);
447447
Mockito.when(schemePortResolver.resolve(target.getSchemeName(), target)).thenReturn(8443);
448448
Mockito.when(tlsSocketStrategyLookup.lookup("https")).thenReturn(tlsSocketStrategy);
449-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
449+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
450450

451451
mgr.connect(endpoint1, null, context);
452452

453453
Mockito.verify(dnsResolver, Mockito.times(1)).resolve("someproxy", 8080);
454454
Mockito.verify(schemePortResolver, Mockito.times(1)).resolve(proxy.getSchemeName(), proxy);
455-
Mockito.verify(detachedSocketFactory, Mockito.times(1)).create(null);
455+
Mockito.verify(detachedSocketFactory, Mockito.times(1)).create("http", null);
456456
Mockito.verify(socket, Mockito.times(1)).connect(new InetSocketAddress(remote, 8080), 234);
457457

458458
Mockito.when(conn.getSocket()).thenReturn(socket);

httpclient5/src/test/java/org/apache/hc/client5/http/impl/io/TestHttpClientConnectionOperator.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ void testConnect() throws Exception {
9999
Mockito.when(dnsResolver.resolve("somehost", port)).thenReturn(resolvedAddresses);
100100

101101
Mockito.when(schemePortResolver.resolve(host.getSchemeName(), host)).thenReturn(port);
102-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
102+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
103103

104104
final SocketConfig socketConfig = SocketConfig.custom()
105105
.setSoKeepAlive(true)
@@ -143,7 +143,7 @@ void testConnectWithTLSUpgrade() throws Exception {
143143
Mockito.when(dnsResolver.resolve("somehost", port)).thenReturn(resolvedAddresses);
144144

145145
Mockito.when(schemePortResolver.resolve(host.getSchemeName(), host)).thenReturn(port);
146-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
146+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
147147

148148
Mockito.when(tlsSocketStrategyLookup.lookup("https")).thenReturn(tlsSocketStrategy);
149149
final SSLSocket upgradedSocket = Mockito.mock(SSLSocket.class);
@@ -178,7 +178,7 @@ void testConnectTimeout() throws Exception {
178178
);
179179
Mockito.when(dnsResolver.resolve("somehost", port)).thenReturn(resolvedAddresses);
180180
Mockito.when(schemePortResolver.resolve(host.getSchemeName(), host)).thenReturn(port);
181-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
181+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
182182
Mockito.doThrow(new SocketTimeoutException()).when(socket).connect(Mockito.any(), Mockito.anyInt());
183183
Assertions.assertThrows(ConnectTimeoutException.class, () ->
184184
connectionOperator.connect(
@@ -200,7 +200,7 @@ void testConnectFailure() throws Exception {
200200
Mockito.when(dnsResolver.resolve("somehost", port)).thenReturn(resolvedAddresses);
201201

202202
Mockito.when(schemePortResolver.resolve(host.getSchemeName(), host)).thenReturn(port);
203-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
203+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
204204
Mockito.doThrow(new ConnectException()).when(socket).connect(Mockito.any(), Mockito.anyInt());
205205

206206
Assertions.assertThrows(HttpHostConnectException.class, () ->
@@ -218,7 +218,7 @@ void testConnectFailover() throws Exception {
218218

219219
Mockito.when(dnsResolver.resolve("somehost", 80)).thenReturn(Arrays.asList(ipAddress1, ipAddress2));
220220
Mockito.when(schemePortResolver.resolve(host.getSchemeName(), host)).thenReturn(80);
221-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
221+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
222222
Mockito.doThrow(new ConnectException()).when(socket).connect(
223223
Mockito.eq(ipAddress1),
224224
Mockito.anyInt());
@@ -243,7 +243,7 @@ void testConnectExplicitAddress() throws Exception {
243243
final HttpHost host = new HttpHost(ip);
244244

245245
Mockito.when(schemePortResolver.resolve(host.getSchemeName(), host)).thenReturn(80);
246-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
246+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
247247

248248
final InetSocketAddress localAddress = new InetSocketAddress(local, 0);
249249
final TlsConfig tlsConfig = TlsConfig.custom()
@@ -316,7 +316,7 @@ void testConnectWithDisableDnsResolution() throws Exception {
316316
Mockito.when(dnsResolver.resolve(host.getHostName(), port)).thenReturn(resolvedAddresses);
317317

318318
Mockito.when(schemePortResolver.resolve(host.getSchemeName(), host)).thenReturn(port);
319-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
319+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
320320

321321
final SocketConfig socketConfig = SocketConfig.custom()
322322
.setSoKeepAlive(true)
@@ -359,7 +359,7 @@ void testConnectWithDnsResolutionAndFallback() throws Exception {
359359
);
360360
Mockito.when(dnsResolver.resolve("fallbackhost.com", port)).thenReturn(resolvedAddresses);
361361
Mockito.when(schemePortResolver.resolve(host.getSchemeName(), host)).thenReturn(port);
362-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
362+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
363363

364364
// Simulate failure to connect to the first resolved address
365365
Mockito.doThrow(new ConnectException()).when(socket).connect(Mockito.eq(new InetSocketAddress(ip1, port)), Mockito.anyInt());

httpclient5/src/test/java/org/apache/hc/client5/http/impl/io/TestPoolingHttpClientConnectionManager.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ void testTargetConnect() throws Exception {
267267

268268
Mockito.when(dnsResolver.resolve("somehost", 8443)).thenReturn(Collections.singletonList(new InetSocketAddress(remote, 8443)));
269269
Mockito.when(schemePortResolver.resolve(target.getSchemeName(), target)).thenReturn(8443);
270-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
270+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
271271

272272
Mockito.when(tlsSocketStrategyLookup.lookup("https")).thenReturn(tlsSocketStrategy);
273273
Mockito.when(tlsSocketStrategy.upgrade(
@@ -281,15 +281,15 @@ void testTargetConnect() throws Exception {
281281

282282
Mockito.verify(dnsResolver, Mockito.times(1)).resolve("somehost", 8443);
283283
Mockito.verify(schemePortResolver, Mockito.times(1)).resolve(target.getSchemeName(), target);
284-
Mockito.verify(detachedSocketFactory, Mockito.times(1)).create(null);
284+
Mockito.verify(detachedSocketFactory, Mockito.times(1)).create("https", null);
285285
Mockito.verify(socket, Mockito.times(1)).connect(new InetSocketAddress(remote, 8443), 234);
286286
Mockito.verify(tlsSocketStrategy).upgrade(socket, "somehost", 443, tlsConfig, context);
287287

288288
mgr.connect(endpoint1, TimeValue.ofMilliseconds(123), context);
289289

290290
Mockito.verify(dnsResolver, Mockito.times(2)).resolve("somehost", 8443);
291291
Mockito.verify(schemePortResolver, Mockito.times(2)).resolve(target.getSchemeName(), target);
292-
Mockito.verify(detachedSocketFactory, Mockito.times(2)).create(null);
292+
Mockito.verify(detachedSocketFactory, Mockito.times(2)).create("https", null);
293293
Mockito.verify(socket, Mockito.times(1)).connect(new InetSocketAddress(remote, 8443), 123);
294294
Mockito.verify(tlsSocketStrategy, Mockito.times(2)).upgrade(socket, "somehost", 443, tlsConfig, context);
295295
}
@@ -336,13 +336,13 @@ void testProxyConnectAndUpgrade() throws Exception {
336336
Mockito.when(schemePortResolver.resolve(proxy.getSchemeName(), proxy)).thenReturn(8080);
337337
Mockito.when(schemePortResolver.resolve(target.getSchemeName(), target)).thenReturn(8443);
338338
Mockito.when(tlsSocketStrategyLookup.lookup("https")).thenReturn(tlsSocketStrategy);
339-
Mockito.when(detachedSocketFactory.create(Mockito.any())).thenReturn(socket);
339+
Mockito.when(detachedSocketFactory.create(Mockito.any(), Mockito.any())).thenReturn(socket);
340340

341341
mgr.connect(endpoint1, null, context);
342342

343343
Mockito.verify(dnsResolver, Mockito.times(1)).resolve("someproxy", 8080);
344344
Mockito.verify(schemePortResolver, Mockito.times(1)).resolve(proxy.getSchemeName(), proxy);
345-
Mockito.verify(detachedSocketFactory, Mockito.times(1)).create(null);
345+
Mockito.verify(detachedSocketFactory, Mockito.times(1)).create("http", null);
346346
Mockito.verify(socket, Mockito.times(1)).connect(new InetSocketAddress(remote, 8080), 234);
347347

348348
Mockito.when(conn.isOpen()).thenReturn(true);

0 commit comments

Comments
 (0)