diff options
author | zpencer <spencerfang@google.com> | 2018-08-16 15:04:33 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-16 15:04:33 -0700 |
commit | a48b090dc69f397a43730ee1ec6e2f0651b45528 (patch) | |
tree | 3676cbeafa11818201a327796725d286a064cd35 /core | |
parent | d1146e20155fc01512af39ef50ab7ed44554acc6 (diff) | |
download | grpc-grpc-java-a48b090dc69f397a43730ee1ec6e2f0651b45528.tar.gz |
core: Handle null ProxySelector (#4762)
ProxySelector.getDefault() can return null
Fixes #4677
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/java/io/grpc/internal/ProxyDetectorImpl.java | 8 | ||||
-rw-r--r-- | core/src/test/java/io/grpc/internal/ProxyDetectorImplTest.java | 14 |
2 files changed, 21 insertions, 1 deletions
diff --git a/core/src/main/java/io/grpc/internal/ProxyDetectorImpl.java b/core/src/main/java/io/grpc/internal/ProxyDetectorImpl.java index f6072464d..1219d132d 100644 --- a/core/src/main/java/io/grpc/internal/ProxyDetectorImpl.java +++ b/core/src/main/java/io/grpc/internal/ProxyDetectorImpl.java @@ -222,7 +222,13 @@ class ProxyDetectorImpl implements ProxyDetector { return null; } - List<Proxy> proxies = proxySelector.get().select(uri); + ProxySelector proxySelector = this.proxySelector.get(); + if (proxySelector == null) { + log.log(Level.FINE, "proxy selector is null, so continuing without proxy lookup"); + return null; + } + + List<Proxy> proxies = proxySelector.select(uri); 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 0d3227e79..f2a21de49 100644 --- a/core/src/test/java/io/grpc/internal/ProxyDetectorImplTest.java +++ b/core/src/test/java/io/grpc/internal/ProxyDetectorImplTest.java @@ -197,4 +197,18 @@ public class ProxyDetectorImplTest { proxyPassword), detected); } + + @Test + public void proxySelectorReturnsNull() throws Exception { + ProxyDetectorImpl proxyDetector = new ProxyDetectorImpl( + new Supplier<ProxySelector>() { + @Override + public ProxySelector get() { + return null; + } + }, + authenticator, + null); + assertNull(proxyDetector.proxyFor(destination)); + } } |