On Tue, 2025-01-07 at 02:08 +0000, jan luehe wrote:
>  With 5.2, we have been using code such as the following to register
> custom socket factories to support proxying:
> if (proxyProtocolHeader != null) {   
> RegistryBuilder<ConnectionSocketFactory> registryBuilder =
> RegistryBuilder.create();    registryBuilder.register("http", new
> ProxyProtocolSocketFactory(proxyProtocolHeader,
> (InetSocketAddress)proxy.address()));   
> Registry<ConnectionSocketFactory> registry =
> registryBuilder.build();    HttpClientConnectionManager ccm = new
> BasicHttpClientConnectionManager(registry, ...);   
> clientBuilder.setConnectionManager(ccm);}     where
> ProxyProtocolSocketFactory would override its connectSocket method as
> follows, to connect to the proxy and write the proxy protocol header:
> static class ProxyProtocolSocketFactory extends
> PlainConnectionSocketFactory {
>     [...]
>     @Override    public Socket connectSocket(TimeValue
> connectTimeout, Socket socket, HttpHost host, InetSocketAddress
> remoteAddress,                                InetSocketAddress
> localAddress, HttpContext context) throws IOException {       
> remoteAddress = proxyAddress != null ? proxyAddress : remoteAddress; 
>       Socket sock = super.connectSocket(connectTimeout, socket, host,
> remoteAddress, localAddress, context);       
> writeProxyProtocolHeader(proxyProtocolHeader, sock);        return
> sock;    }}
> This no longer works after upgrading to 5.4.1, because our
> ProxyProtocolSocketFactory is no longer being called back at its
> connectSocket method.
> I believe this is due to this change: 
> https://github.com/apache/httpcomponents-client/commit/851c8df9fff995f8b09c2fef09b5a2ad0dc4185e#diff-c8d113aa21d5fe2678c4c36f731cda6ed01d172d7e47e4d9fc527a5d4a921077R243
> .
> Could you please suggest how we should change our code to make it
> work again?
> Thank you!

If you want a complete control over the process of connection
initialization implement a custom HttpClientConnectionOperator

https://github.com/apache/httpcomponents-client/blob/master/httpclient5/src/main/java/org/apache/hc/client5/http/impl/io/DefaultHttpClientConnectionOperator.java

Oleg

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to