RFR: 8346017: Socket.connect specified to throw UHE for unresolved address is problematic for SOCKS V5 proxy [v3]

Alan Bateman alanb at openjdk.org
Fri Dec 13 15:00:37 UTC 2024


On Fri, 13 Dec 2024 14:56:56 GMT, Volkan Yazıcı <duke at openjdk.org> wrote:

>> [JDK-8343791](https://bugs.openjdk.org/browse/JDK-8343791) modified `Socket::connect` to throw `UHE` on unresolved addresses – merged in #22160. As reported in [JDK-8346017](https://bugs.openjdk.org/browse/JDK-8346017), this renders `connect()` unusable when there is a (SOCKS) proxy in play, where calling `connect()` using unresolved addresses is a valid operation. This PR
>> 
>> 1. Reverts the earlier `Socket::connect` change
>> 2. Updates tests accordingly
>> 3. Enhances tests with proxied socket inputs
>> 
>> These changes require CSR and RN tickets. I will implement them once we agree on a solution here.
>
> Volkan Yazıcı has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Add `ConnectSocksProxyTest`
>  - Add `NO_PROXY` case to `ConnectFailTest`

test/jdk/java/net/Socket/ConnectFailTest.java line 165:

> 163:         @SuppressWarnings("resource")
> 164:         Socket channelSocket = SocketChannel.open().socket();
> 165:         Socket proxiedSocket = new Socket(Proxy.NO_PROXY);

Adding a Socket created with NO_PROXY is a good idea. On naming "proxiedSocket" suggests it's proxies, I think you want noProxySocket :-)

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/22719#discussion_r1884061676


More information about the net-dev mailing list