From ac43fae035cfbddc6949d78375c105deb204bd99 Mon Sep 17 00:00:00 2001 From: Mikhail Perminov Date: Mon, 4 May 2026 23:42:39 +0300 Subject: [PATCH] core: handle empty proxy selector result --- .../java/io/grpc/internal/ProxyDetectorImpl.java | 4 ++++ .../io/grpc/internal/ProxyDetectorImplTest.java | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/core/src/main/java/io/grpc/internal/ProxyDetectorImpl.java b/core/src/main/java/io/grpc/internal/ProxyDetectorImpl.java index 58c7803346f..7995acf05cf 100644 --- a/core/src/main/java/io/grpc/internal/ProxyDetectorImpl.java +++ b/core/src/main/java/io/grpc/internal/ProxyDetectorImpl.java @@ -207,6 +207,10 @@ private ProxiedSocketAddress detectProxy(InetSocketAddress targetAddr) throws IO } List proxies = proxySelector.select(uri); + if (proxies == null || proxies.isEmpty()) { + log.log(Level.FINE, "No proxies returned, proceeding without proxy"); + return null; + } if (proxies.size() > 1) { log.warning("More than 1 proxy detected, gRPC will select the first one"); } diff --git a/core/src/test/java/io/grpc/internal/ProxyDetectorImplTest.java b/core/src/test/java/io/grpc/internal/ProxyDetectorImplTest.java index 771050f119d..8f33c947a15 100644 --- a/core/src/test/java/io/grpc/internal/ProxyDetectorImplTest.java +++ b/core/src/test/java/io/grpc/internal/ProxyDetectorImplTest.java @@ -40,6 +40,7 @@ import java.net.ProxySelector; import java.net.SocketAddress; import java.net.URI; +import java.util.Collections; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -191,4 +192,18 @@ public ProxySelector get() { authenticator); assertNull(proxyDetector.proxyFor(destination)); } + + @Test + public void returnNullWhenProxySelectorReturnsEmptyList() throws Exception { + when(proxySelector.select(any(URI.class))).thenReturn(Collections.emptyList()); + + assertNull(proxyDetector.proxyFor(destination)); + } + + @Test + public void returnNullWhenProxySelectorReturnsNullList() throws Exception { + when(proxySelector.select(any(URI.class))).thenReturn(null); + + assertNull(proxyDetector.proxyFor(destination)); + } }