[
https://issues.apache.org/jira/browse/HTTPCLIENT-1764?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oleg Kalnichevski resolved HTTPCLIENT-1764.
-------------------------------------------
Resolution: Invalid
CONNECT and SSL handshakes are executed as a part of connection initialization
given its defined route. These processes nothing to do with request execution.
There is nothing stopping you from setting {{SockedConfig}} on a per host basis.
Oleg
> SocketTimeout cannot be set on per request basis when using Proxy and SSL
> -------------------------------------------------------------------------
>
> Key: HTTPCLIENT-1764
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1764
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpClient
> Affects Versions: 4.5.2
> Reporter: Sebastian Choina
>
> I have ran into the same problem described in HTTPCLIENT-1478 and IMHO it
> should not be closed.
> Right now there is no way to set {{soTimeout}} for http tunnel establish
> phase causing client to hang forever in case of bad proxy.
> The workaround is to set {{defaultSockedConfig}} upon creation of the client.
> However IMHO, client should honor {{RequestConfig#SocketTimeout}} in this
> case, and if not, developer should have the ability to set {{soTimeout}} for
> this particular phase on request basis as well.
> Setting default configuration is one workaround, but if I would need timeout
> value to vary across the requests, I would have to create new client for each
> one and that is against the desing of reusebility of the client itself.
> Here is the wire log on hanging connection. As for the time of writing,
> described scenario (inf. hang) is reproducable using proxy from the logs.
> {noformat}
> 09:55:06.719 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> o.a.h.c.protocol.RequestAddCookies - CookieSpec selected: default
> 09:55:06.720 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> o.a.h.c.protocol.RequestAuthCache - Auth cache not set in the context
> 09:55:06.721 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> o.a.h.i.c.PoolingHttpClientConnectionManager - Connection request: [route:
> {tls}->http://84.28.86.73:80->https://api.ipify.org:443][total kept alive: 0;
> route allocated: 0 of 2; total allocated: 0 of 20]
> 09:55:06.722 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> o.a.h.i.c.PoolingHttpClientConnectionManager - Connection leased: [id:
> 19][route: {tls}->http://84.28.86.73:80->https://api.ipify.org:443][total
> kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 20]
> 09:55:06.723 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> o.a.h.impl.execchain.MainClientExec - Opening connection
> {tls}->http://84.28.86.73:80->https://api.ipify.org:443
> 09:55:06.723 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> o.a.h.i.c.DefaultHttpClientConnectionOperator - Connecting to /84.28.86.73:80
> 09:55:06.786 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> o.a.h.i.c.DefaultHttpClientConnectionOperator - Connection established
> 192.168.2.144:31914<->84.28.86.73:80
> 09:55:06.787 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> org.apache.http.headers - http-outgoing-19 >> CONNECT api.ipify.org:443
> HTTP/1.1
> 09:55:06.787 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> org.apache.http.headers - http-outgoing-19 >> Host: api.ipify.org
> 09:55:06.788 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> org.apache.http.headers - http-outgoing-19 >> User-Agent:
> Apache-HttpClient/4.5.2 (Java/1.8.0_66)
> 09:55:06.788 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> org.apache.http.wire - http-outgoing-19 >> "CONNECT api.ipify.org:443
> HTTP/1.1[\r][\n]"
> 09:55:06.788 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> org.apache.http.wire - http-outgoing-19 >> "Host: api.ipify.org[\r][\n]"
> 09:55:06.789 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> org.apache.http.wire - http-outgoing-19 >> "User-Agent:
> Apache-HttpClient/4.5.2 (Java/1.8.0_66)[\r][\n]"
> 09:55:06.789 [ProxyPool-ScheduledWorkers-pool-3-thread-1] DEBUG
> org.apache.http.wire - http-outgoing-19 >> "[\r][\n]"
> {noformat}
> Workaround to force timeout:
> {noformat}
> client = HttpClients.custom()// the same as createDefault();
> .setDefaultSocketConfig( // remove that and the
> request will hang like shown above
> SocketConfig.custom()
>
> .setSoTimeout(2000)
> .build())
> .disableAutomaticRetries() // we dont want this
> test to take too long
> .build();
> {noformat}
> If we remove default socket config, client will hang
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]