[ 
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]

Reply via email to