From f38d0a8fc41437c5b572422633d68b6c2e7260a5 Mon Sep 17 00:00:00 2001 From: Bartosz Radzynski Date: Mon, 15 May 2023 09:26:27 +0200 Subject: [PATCH 1/2] Fix hostname resolution for proxied connections --- src/main/java/io/nats/client/impl/SocketDataPort.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/nats/client/impl/SocketDataPort.java b/src/main/java/io/nats/client/impl/SocketDataPort.java index 21e559f64..a82bc2b46 100644 --- a/src/main/java/io/nats/client/impl/SocketDataPort.java +++ b/src/main/java/io/nats/client/impl/SocketDataPort.java @@ -74,7 +74,9 @@ public void connect(NatsConnection conn, NatsUri nuri, long timeoutNanos) throws socket.setTcpNoDelay(true); socket.setReceiveBufferSize(2 * 1024 * 1024); socket.setSendBufferSize(2 * 1024 * 1024); - socket.connect(new InetSocketAddress(host, port), (int) timeout); + InetSocketAddress inetSocketAddress = options.isNoResolveHostnames() ? + InetSocketAddress.createUnresolved(host, port) : new InetSocketAddress(host, port); + socket.connect(inetSocketAddress, (int) timeout); if (isWebsocketScheme(nuri.getScheme())) { if (SECURE_WEBSOCKET_PROTOCOL.equalsIgnoreCase(nuri.getScheme())) { From 3480c053d42d5e8fa7fb6c60a269c3df80e66e27 Mon Sep 17 00:00:00 2001 From: Bartosz Radzynski Date: Mon, 15 May 2023 16:58:45 +0200 Subject: [PATCH 2/2] Do not use `InetSocketAddress.createUnresolved` for uris already containing an IP address --- src/main/java/io/nats/client/impl/SocketDataPort.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/nats/client/impl/SocketDataPort.java b/src/main/java/io/nats/client/impl/SocketDataPort.java index a82bc2b46..db941e39b 100644 --- a/src/main/java/io/nats/client/impl/SocketDataPort.java +++ b/src/main/java/io/nats/client/impl/SocketDataPort.java @@ -74,7 +74,7 @@ public void connect(NatsConnection conn, NatsUri nuri, long timeoutNanos) throws socket.setTcpNoDelay(true); socket.setReceiveBufferSize(2 * 1024 * 1024); socket.setSendBufferSize(2 * 1024 * 1024); - InetSocketAddress inetSocketAddress = options.isNoResolveHostnames() ? + InetSocketAddress inetSocketAddress = (options.isNoResolveHostnames() && !nuri.hostIsIpAddress()) ? InetSocketAddress.createUnresolved(host, port) : new InetSocketAddress(host, port); socket.connect(inetSocketAddress, (int) timeout);