[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-2344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17884596#comment-17884596
 ] 

Oleg Kalnichevski edited comment on HTTPCLIENT-2344 at 9/25/24 12:50 PM:
-------------------------------------------------------------------------

I ran a few message exchnages using this sample [1] as a test case. The proxy 
used for tests is Squid 3 running in a docker container. The target server is 
httpbin.org that we all love.   

This is the wire log of a message exchange executed through a proxy tunnel. As 
you can see an `Upgrade` request header does not get added to the outgoing 
request messages (both CONNECT and GET) given the tunnel has already been 
already TLS secured. 

{noformat}
Executing request GET /get via http://localhost:8888
2024-09-25 14:08:20,739 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 preparing request execution
2024-09-25 14:08:20,768 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ProtocolExec] ex-0000000001 
target auth state: UNCHALLENGED
2024-09-25 14:08:20,769 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ConnectExec] ex-0000000001 
acquiring connection with route 
{tls}->http://localhost:8888->[https://httpbin.org:443]
2024-09-25 14:08:20,770 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 acquiring endpoint (3 MINUTES)
2024-09-25 14:08:20,773 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 endpoint lease request (3 MINUTES) [route: 
{tls}->http://localhost:8888->[https://httpbin.org:443]][total available: 0; 
route allocated: 0 of 5; total allocated: 0 of 25]
2024-09-25 14:08:20,778 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 endpoint leased [route: 
{tls}->http://localhost:8888->[https://httpbin.org:443]][total available: 0; 
route allocated: 1 of 5; total allocated: 1 of 25]
2024-09-25 14:08:20,792 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 acquired ep-0000000001
2024-09-25 14:08:20,793 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 acquired endpoint ep-0000000001
2024-09-25 14:08:20,793 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ConnectExec] ex-0000000001 
opening connection {tls}->http://localhost:8888->[https://httpbin.org:443]
2024-09-25 14:08:20,794 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 connecting endpoint (null)
2024-09-25 14:08:20,796 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connecting endpoint to http://localhost:8888 (3 MINUTES)
2024-09-25 14:08:20,797 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
localhost resolving remote address
2024-09-25 14:08:20,797 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
localhost resolved to [localhost/127.0.0.1]
2024-09-25 14:08:20,798 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http://localhost:8888 connecting null->localhost/127.0.0.1:8888 (3 MINUTES)
2024-09-25 14:08:20,799 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http-outgoing-0 http://localhost:8888 connected 
/127.0.0.1:38572->localhost/127.0.0.1:8888
2024-09-25 14:08:20,799 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultManagedHttpClientConnection] 
http-outgoing-0 set socket timeout to 3 MINUTES
2024-09-25 14:08:20,800 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connected http-outgoing-0
2024-09-25 14:08:20,800 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 endpoint connected
2024-09-25 14:08:20,801 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 start execution ex-0000000001
2024-09-25 14:08:20,803 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 executing exchange ex-0000000001 over http-outgoing-0
2024-09-25 14:08:20,804 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> CONNECT httpbin.org:443 HTTP/1.1
2024-09-25 14:08:20,804 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Host: httpbin.org:443
2024-09-25 14:08:20,804 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> User-Agent: Apache-HttpClient/5.4.1-SNAPSHOT (Java/1.8.0_342)
2024-09-25 14:08:21,000 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << HTTP/1.1 200 Connection established
2024-09-25 14:08:21,000 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ConnectExec] ex-0000000001 
tunnel to target created.
2024-09-25 14:08:21,000 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 upgrading endpoint
2024-09-25 14:08:21,002 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http-outgoing-0 upgrading to TLS httpbin.org:443
2024-09-25 14:08:21,041 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Enabled 
protocols: [TLSv1.2]
2024-09-25 14:08:21,042 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Enabled cipher 
suites: [TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, 
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, 
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, 
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, 
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, 
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, 
TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, 
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, 
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, 
TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, 
TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, 
TLS_RSA_WITH_AES_128_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
2024-09-25 14:08:21,042 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Starting 
handshake (null)
2024-09-25 14:08:21,715 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Secure session 
established
2024-09-25 14:08:21,715 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy]  negotiated 
protocol: TLSv1.2
2024-09-25 14:08:21,715 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy]  negotiated 
cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
2024-09-25 14:08:21,715 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Peer 
principal: CN=httpbin.org
2024-09-25 14:08:21,716 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy]  peer 
alternative names: [httpbin.org, *.httpbin.org]
2024-09-25 14:08:21,716 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Issuer 
principal: CN=Amazon RSA 2048 M02,O=Amazon,C=US
2024-09-25 14:08:21,718 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http-outgoing-0 upgraded to TLS httpbin.org:443
2024-09-25 14:08:21,718 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.MainClientExec] ex-0000000001 
executing GET /get HTTP/1.1
2024-09-25 14:08:21,719 DEBUG 
[main][org.apache.hc.client5.http.protocol.RequestUpgrade] Connection is 
upgradable: protocol version = HTTP/1.1
2024-09-25 14:08:21,719 DEBUG 
[main][org.apache.hc.client5.http.protocol.RequestAddCookies] ex-0000000001 
Cookie spec selected: strict
2024-09-25 14:08:21,730 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 start execution ex-0000000001
2024-09-25 14:08:21,730 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 executing exchange ex-0000000001 over http-outgoing-0
2024-09-25 14:08:21,731 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> GET /get HTTP/1.1
2024-09-25 14:08:21,731 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Accept-Encoding: gzip, x-gzip, deflate, br
2024-09-25 14:08:21,731 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Host: httpbin.org:443
2024-09-25 14:08:21,731 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Connection: keep-alive
2024-09-25 14:08:21,731 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> User-Agent: Apache-HttpClient/5.4.1-SNAPSHOT (Java/1.8.0_342)
2024-09-25 14:08:22,242 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << HTTP/1.1 200 OK
2024-09-25 14:08:22,242 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Date: Wed, 25 Sep 2024 12:08:22 GMT
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Content-Type: application/json
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Content-Length: 324
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Connection: keep-alive
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Server: gunicorn/19.9.0
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Access-Control-Allow-Origin: *
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Access-Control-Allow-Credentials: true
2024-09-25 14:08:22,249 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.MainClientExec] ex-0000000001 
connection can be kept alive for 3 MINUTES
----------------------------------------
GET /get->HTTP/1.1 200 OK
2024-09-25 14:08:22,256 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 releasing valid endpoint
2024-09-25 14:08:22,257 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 releasing endpoint
2024-09-25 14:08:22,257 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connection http-outgoing-0 can be kept alive for 3 MINUTES
2024-09-25 14:08:22,258 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connection released [route: 
{tls}->http://localhost:8888->[https://httpbin.org:443]][total available: 1; 
route allocated: 1 of 5; total allocated: 1 of 25]
2024-09-25 14:08:22,258 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
Shutdown connection pool GRACEFUL
2024-09-25 14:08:22,258 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultManagedHttpClientConnection] 
http-outgoing-0 close connection GRACEFUL
2024-09-25 14:08:22,448 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
Connection pool shut down
{noformat}

This is the wire log of a message exchange executed using the proxy as an 
intermediary (no tunnel involved). In this case an `Upgrade` header gets added 
to the outgoing HTTP request. The message exchange succeeds and the proxy 
correctly conveys 200 status from the target server to the client as expected. 
The connection actually does not get upgraded. Apparently the proxy simply 
chose to ignore the TLS upgrade request if it is not able or willing to execute 
it. As it should.       

{noformat}
Executing request GET /get via http://localhost:8888
2024-09-25 14:09:44,846 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 preparing request execution
2024-09-25 14:09:44,874 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ProtocolExec] ex-0000000001 
target auth state: UNCHALLENGED
2024-09-25 14:09:44,875 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ProtocolExec] ex-0000000001 
proxy auth state: UNCHALLENGED
2024-09-25 14:09:44,876 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ConnectExec] ex-0000000001 
acquiring connection with route 
{}->http://localhost:8888->[http://httpbin.org:80]
2024-09-25 14:09:44,876 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 acquiring endpoint (3 MINUTES)
2024-09-25 14:09:44,879 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 endpoint lease request (3 MINUTES) [route: 
{}->http://localhost:8888->[http://httpbin.org:80]][total available: 0; route 
allocated: 0 of 5; total allocated: 0 of 25]
2024-09-25 14:09:44,885 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 endpoint leased [route: 
{}->http://localhost:8888->[http://httpbin.org:80]][total available: 0; route 
allocated: 1 of 5; total allocated: 1 of 25]
2024-09-25 14:09:44,899 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 acquired ep-0000000001
2024-09-25 14:09:44,899 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 acquired endpoint ep-0000000001
2024-09-25 14:09:44,899 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ConnectExec] ex-0000000001 
opening connection {}->http://localhost:8888->[http://httpbin.org:80]
2024-09-25 14:09:44,900 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 connecting endpoint (null)
2024-09-25 14:09:44,901 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connecting endpoint to http://localhost:8888 (3 MINUTES)
2024-09-25 14:09:44,903 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
localhost resolving remote address
2024-09-25 14:09:44,904 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
localhost resolved to [localhost/127.0.0.1]
2024-09-25 14:09:44,904 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http://localhost:8888 connecting null->localhost/127.0.0.1:8888 (3 MINUTES)
2024-09-25 14:09:44,905 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http-outgoing-0 http://localhost:8888 connected 
/127.0.0.1:42656->localhost/127.0.0.1:8888
2024-09-25 14:09:44,906 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultManagedHttpClientConnection] 
http-outgoing-0 set socket timeout to 3 MINUTES
2024-09-25 14:09:44,906 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connected http-outgoing-0
2024-09-25 14:09:44,906 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 endpoint connected
2024-09-25 14:09:44,908 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.MainClientExec] ex-0000000001 
executing GET http://httpbin.org:80/get HTTP/1.1
2024-09-25 14:09:44,909 DEBUG 
[main][org.apache.hc.client5.http.protocol.RequestUpgrade] Connection is 
upgradable: protocol version = HTTP/1.1
2024-09-25 14:09:44,909 DEBUG 
[main][org.apache.hc.client5.http.protocol.RequestUpgrade] Connection is 
upgradable to TLS: method = GET
2024-09-25 14:09:44,909 DEBUG 
[main][org.apache.hc.client5.http.protocol.RequestAddCookies] ex-0000000001 
Cookie spec selected: strict
2024-09-25 14:09:44,924 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 start execution ex-0000000001
2024-09-25 14:09:44,926 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 executing exchange ex-0000000001 over http-outgoing-0
2024-09-25 14:09:44,927 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> GET http://httpbin.org:80/get HTTP/1.1
2024-09-25 14:09:44,928 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Accept-Encoding: gzip, x-gzip, deflate, br
2024-09-25 14:09:44,928 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Host: httpbin.org:80
2024-09-25 14:09:44,928 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> User-Agent: Apache-HttpClient/5.4.1-SNAPSHOT (Java/1.8.0_342)
2024-09-25 14:09:44,928 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Upgrade: TLS/1.2
2024-09-25 14:09:44,928 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Connection: Upgrade
2024-09-25 14:09:47,744 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << HTTP/1.1 200 OK
2024-09-25 14:09:47,744 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Date: Wed, 25 Sep 2024 12:09:47 GMT
2024-09-25 14:09:47,744 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Content-Type: application/json
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Content-Length: 375
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Server: gunicorn/19.9.0
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Access-Control-Allow-Origin: *
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Access-Control-Allow-Credentials: true
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << X-Cache: MISS from 0fe073e489bb
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << X-Cache-Lookup: MISS from 0fe073e489bb:8888
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Via: 1.1 0fe073e489bb (squid/3.3.8)
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Connection: keep-alive
2024-09-25 14:09:47,750 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.MainClientExec] ex-0000000001 
connection can be kept alive for 3 MINUTES
----------------------------------------
GET /get->HTTP/1.1 200 OK
2024-09-25 14:09:47,756 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 releasing valid endpoint
2024-09-25 14:09:47,757 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 releasing endpoint
2024-09-25 14:09:47,757 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connection http-outgoing-0 can be kept alive for 3 MINUTES
2024-09-25 14:09:47,758 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connection released [route: 
{}->http://localhost:8888->[http://httpbin.org:80]][total available: 1; route 
allocated: 1 of 5; total allocated: 1 of 25]
2024-09-25 14:09:47,758 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
Shutdown connection pool GRACEFUL
2024-09-25 14:09:47,759 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultManagedHttpClientConnection] 
http-outgoing-0 close connection GRACEFUL
2024-09-25 14:09:47,759 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
Connection pool shut down
{noformat}

Oleg

[1] 
https://github.com/apache/httpcomponents-client/blob/master/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientExecuteProxy.java


was (Author: olegk):
I ran a few message exchnages using this sample [1] as a test case. The proxy 
used for tests is Squid 3 running in a docker container. The target server is 
httpbin.org that we all love.   

This is the wire log of a message exchange executed through a proxy tunnel. As 
you can see an `Upgrade` request header does not get added to outgoing message 
given the tunnel has already been already TLS secured. 

{noformat}
Executing request GET /get via http://localhost:8888
2024-09-25 14:08:20,739 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 preparing request execution
2024-09-25 14:08:20,768 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ProtocolExec] ex-0000000001 
target auth state: UNCHALLENGED
2024-09-25 14:08:20,769 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ConnectExec] ex-0000000001 
acquiring connection with route 
{tls}->http://localhost:8888->[https://httpbin.org:443]
2024-09-25 14:08:20,770 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 acquiring endpoint (3 MINUTES)
2024-09-25 14:08:20,773 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 endpoint lease request (3 MINUTES) [route: 
{tls}->http://localhost:8888->[https://httpbin.org:443]][total available: 0; 
route allocated: 0 of 5; total allocated: 0 of 25]
2024-09-25 14:08:20,778 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 endpoint leased [route: 
{tls}->http://localhost:8888->[https://httpbin.org:443]][total available: 0; 
route allocated: 1 of 5; total allocated: 1 of 25]
2024-09-25 14:08:20,792 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 acquired ep-0000000001
2024-09-25 14:08:20,793 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 acquired endpoint ep-0000000001
2024-09-25 14:08:20,793 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ConnectExec] ex-0000000001 
opening connection {tls}->http://localhost:8888->[https://httpbin.org:443]
2024-09-25 14:08:20,794 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 connecting endpoint (null)
2024-09-25 14:08:20,796 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connecting endpoint to http://localhost:8888 (3 MINUTES)
2024-09-25 14:08:20,797 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
localhost resolving remote address
2024-09-25 14:08:20,797 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
localhost resolved to [localhost/127.0.0.1]
2024-09-25 14:08:20,798 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http://localhost:8888 connecting null->localhost/127.0.0.1:8888 (3 MINUTES)
2024-09-25 14:08:20,799 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http-outgoing-0 http://localhost:8888 connected 
/127.0.0.1:38572->localhost/127.0.0.1:8888
2024-09-25 14:08:20,799 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultManagedHttpClientConnection] 
http-outgoing-0 set socket timeout to 3 MINUTES
2024-09-25 14:08:20,800 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connected http-outgoing-0
2024-09-25 14:08:20,800 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 endpoint connected
2024-09-25 14:08:20,801 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 start execution ex-0000000001
2024-09-25 14:08:20,803 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 executing exchange ex-0000000001 over http-outgoing-0
2024-09-25 14:08:20,804 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> CONNECT httpbin.org:443 HTTP/1.1
2024-09-25 14:08:20,804 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Host: httpbin.org:443
2024-09-25 14:08:20,804 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> User-Agent: Apache-HttpClient/5.4.1-SNAPSHOT (Java/1.8.0_342)
2024-09-25 14:08:21,000 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << HTTP/1.1 200 Connection established
2024-09-25 14:08:21,000 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ConnectExec] ex-0000000001 
tunnel to target created.
2024-09-25 14:08:21,000 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 upgrading endpoint
2024-09-25 14:08:21,002 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http-outgoing-0 upgrading to TLS httpbin.org:443
2024-09-25 14:08:21,041 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Enabled 
protocols: [TLSv1.2]
2024-09-25 14:08:21,042 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Enabled cipher 
suites: [TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, 
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, 
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, 
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, 
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, 
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, 
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, 
TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, 
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, 
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, 
TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, 
TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, 
TLS_RSA_WITH_AES_128_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
2024-09-25 14:08:21,042 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Starting 
handshake (null)
2024-09-25 14:08:21,715 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Secure session 
established
2024-09-25 14:08:21,715 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy]  negotiated 
protocol: TLSv1.2
2024-09-25 14:08:21,715 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy]  negotiated 
cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
2024-09-25 14:08:21,715 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Peer 
principal: CN=httpbin.org
2024-09-25 14:08:21,716 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy]  peer 
alternative names: [httpbin.org, *.httpbin.org]
2024-09-25 14:08:21,716 DEBUG 
[main][org.apache.hc.client5.http.ssl.AbstractClientTlsStrategy] Issuer 
principal: CN=Amazon RSA 2048 M02,O=Amazon,C=US
2024-09-25 14:08:21,718 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http-outgoing-0 upgraded to TLS httpbin.org:443
2024-09-25 14:08:21,718 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.MainClientExec] ex-0000000001 
executing GET /get HTTP/1.1
2024-09-25 14:08:21,719 DEBUG 
[main][org.apache.hc.client5.http.protocol.RequestUpgrade] Connection is 
upgradable: protocol version = HTTP/1.1
2024-09-25 14:08:21,719 DEBUG 
[main][org.apache.hc.client5.http.protocol.RequestAddCookies] ex-0000000001 
Cookie spec selected: strict
2024-09-25 14:08:21,730 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 start execution ex-0000000001
2024-09-25 14:08:21,730 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 executing exchange ex-0000000001 over http-outgoing-0
2024-09-25 14:08:21,731 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> GET /get HTTP/1.1
2024-09-25 14:08:21,731 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Accept-Encoding: gzip, x-gzip, deflate, br
2024-09-25 14:08:21,731 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Host: httpbin.org:443
2024-09-25 14:08:21,731 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Connection: keep-alive
2024-09-25 14:08:21,731 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> User-Agent: Apache-HttpClient/5.4.1-SNAPSHOT (Java/1.8.0_342)
2024-09-25 14:08:22,242 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << HTTP/1.1 200 OK
2024-09-25 14:08:22,242 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Date: Wed, 25 Sep 2024 12:08:22 GMT
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Content-Type: application/json
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Content-Length: 324
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Connection: keep-alive
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Server: gunicorn/19.9.0
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Access-Control-Allow-Origin: *
2024-09-25 14:08:22,243 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Access-Control-Allow-Credentials: true
2024-09-25 14:08:22,249 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.MainClientExec] ex-0000000001 
connection can be kept alive for 3 MINUTES
----------------------------------------
GET /get->HTTP/1.1 200 OK
2024-09-25 14:08:22,256 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 releasing valid endpoint
2024-09-25 14:08:22,257 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 releasing endpoint
2024-09-25 14:08:22,257 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connection http-outgoing-0 can be kept alive for 3 MINUTES
2024-09-25 14:08:22,258 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connection released [route: 
{tls}->http://localhost:8888->[https://httpbin.org:443]][total available: 1; 
route allocated: 1 of 5; total allocated: 1 of 25]
2024-09-25 14:08:22,258 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
Shutdown connection pool GRACEFUL
2024-09-25 14:08:22,258 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultManagedHttpClientConnection] 
http-outgoing-0 close connection GRACEFUL
2024-09-25 14:08:22,448 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
Connection pool shut down
{noformat}

This is the wire log of a message exchange executed using the proxy as an 
intermediary (no tunnel involved). In this case an `Upgrade` header gets added 
to outgoing HTTP requests. The message exchange succeeds and the proxy 
correctly conveys 200 status from the target server to the client as expected. 
The connection actually does not get upgraded. Apparently the proxy simply 
chose to ignore the TLS upgrade request if it is not able or willing to execute 
it. As it should.       

{noformat}
Executing request GET /get via http://localhost:8888
2024-09-25 14:09:44,846 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 preparing request execution
2024-09-25 14:09:44,874 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ProtocolExec] ex-0000000001 
target auth state: UNCHALLENGED
2024-09-25 14:09:44,875 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ProtocolExec] ex-0000000001 
proxy auth state: UNCHALLENGED
2024-09-25 14:09:44,876 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ConnectExec] ex-0000000001 
acquiring connection with route 
{}->http://localhost:8888->[http://httpbin.org:80]
2024-09-25 14:09:44,876 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 acquiring endpoint (3 MINUTES)
2024-09-25 14:09:44,879 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 endpoint lease request (3 MINUTES) [route: 
{}->http://localhost:8888->[http://httpbin.org:80]][total available: 0; route 
allocated: 0 of 5; total allocated: 0 of 25]
2024-09-25 14:09:44,885 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 endpoint leased [route: 
{}->http://localhost:8888->[http://httpbin.org:80]][total available: 0; route 
allocated: 1 of 5; total allocated: 1 of 25]
2024-09-25 14:09:44,899 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ex-0000000001 acquired ep-0000000001
2024-09-25 14:09:44,899 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ex-0000000001 acquired endpoint ep-0000000001
2024-09-25 14:09:44,899 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.ConnectExec] ex-0000000001 
opening connection {}->http://localhost:8888->[http://httpbin.org:80]
2024-09-25 14:09:44,900 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 connecting endpoint (null)
2024-09-25 14:09:44,901 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connecting endpoint to http://localhost:8888 (3 MINUTES)
2024-09-25 14:09:44,903 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
localhost resolving remote address
2024-09-25 14:09:44,904 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
localhost resolved to [localhost/127.0.0.1]
2024-09-25 14:09:44,904 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http://localhost:8888 connecting null->localhost/127.0.0.1:8888 (3 MINUTES)
2024-09-25 14:09:44,905 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator] 
http-outgoing-0 http://localhost:8888 connected 
/127.0.0.1:42656->localhost/127.0.0.1:8888
2024-09-25 14:09:44,906 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultManagedHttpClientConnection] 
http-outgoing-0 set socket timeout to 3 MINUTES
2024-09-25 14:09:44,906 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connected http-outgoing-0
2024-09-25 14:09:44,906 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 endpoint connected
2024-09-25 14:09:44,908 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.MainClientExec] ex-0000000001 
executing GET http://httpbin.org:80/get HTTP/1.1
2024-09-25 14:09:44,909 DEBUG 
[main][org.apache.hc.client5.http.protocol.RequestUpgrade] Connection is 
upgradable: protocol version = HTTP/1.1
2024-09-25 14:09:44,909 DEBUG 
[main][org.apache.hc.client5.http.protocol.RequestUpgrade] Connection is 
upgradable to TLS: method = GET
2024-09-25 14:09:44,909 DEBUG 
[main][org.apache.hc.client5.http.protocol.RequestAddCookies] ex-0000000001 
Cookie spec selected: strict
2024-09-25 14:09:44,924 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 start execution ex-0000000001
2024-09-25 14:09:44,926 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 executing exchange ex-0000000001 over http-outgoing-0
2024-09-25 14:09:44,927 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> GET http://httpbin.org:80/get HTTP/1.1
2024-09-25 14:09:44,928 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Accept-Encoding: gzip, x-gzip, deflate, br
2024-09-25 14:09:44,928 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Host: httpbin.org:80
2024-09-25 14:09:44,928 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> User-Agent: Apache-HttpClient/5.4.1-SNAPSHOT (Java/1.8.0_342)
2024-09-25 14:09:44,928 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Upgrade: TLS/1.2
2024-09-25 14:09:44,928 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 >> Connection: Upgrade
2024-09-25 14:09:47,744 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << HTTP/1.1 200 OK
2024-09-25 14:09:47,744 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Date: Wed, 25 Sep 2024 12:09:47 GMT
2024-09-25 14:09:47,744 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Content-Type: application/json
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Content-Length: 375
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Server: gunicorn/19.9.0
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Access-Control-Allow-Origin: *
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Access-Control-Allow-Credentials: true
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << X-Cache: MISS from 0fe073e489bb
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << X-Cache-Lookup: MISS from 0fe073e489bb:8888
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Via: 1.1 0fe073e489bb (squid/3.3.8)
2024-09-25 14:09:47,745 DEBUG [main][org.apache.hc.client5.http.headers] 
http-outgoing-0 << Connection: keep-alive
2024-09-25 14:09:47,750 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.MainClientExec] ex-0000000001 
connection can be kept alive for 3 MINUTES
----------------------------------------
GET /get->HTTP/1.1 200 OK
2024-09-25 14:09:47,756 DEBUG 
[main][org.apache.hc.client5.http.impl.classic.InternalHttpClient] 
ep-0000000001 releasing valid endpoint
2024-09-25 14:09:47,757 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 releasing endpoint
2024-09-25 14:09:47,757 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connection http-outgoing-0 can be kept alive for 3 MINUTES
2024-09-25 14:09:47,758 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
ep-0000000001 connection released [route: 
{}->http://localhost:8888->[http://httpbin.org:80]][total available: 1; route 
allocated: 1 of 5; total allocated: 1 of 25]
2024-09-25 14:09:47,758 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
Shutdown connection pool GRACEFUL
2024-09-25 14:09:47,759 DEBUG 
[main][org.apache.hc.client5.http.impl.io.DefaultManagedHttpClientConnection] 
http-outgoing-0 close connection GRACEFUL
2024-09-25 14:09:47,759 DEBUG 
[main][org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager] 
Connection pool shut down
{noformat}

Oleg

[1] 
https://github.com/apache/httpcomponents-client/blob/master/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientExecuteProxy.java

> HTTP/1.1 TLS Upgrade (RFC-2817) should not be default
> -----------------------------------------------------
>
>                 Key: HTTPCLIENT-2344
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2344
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient (classic)
>    Affects Versions: 5.4
>            Reporter: Ben Plotnick
>            Priority: Minor
>             Fix For: 5.4.1
>
>
> Version 5.4 added RFC-2817 support, which by default tries to upgradeĀ  since 
> protocolUpgradeEnabled is default enabled.
> Although the strict reading of the spec would indicate that a server should 
> ignore upgrade requests that it cannot service, conservative proxies might 
> reject these requests entirely. This is the case in Envoy today
> I don't see a big advantage to enabling this by default and it is causing 
> real issues now.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org


Reply via email to