aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorzpencer <spencerfang@google.com>2018-08-16 15:04:33 -0700
committerGitHub <noreply@github.com>2018-08-16 15:04:33 -0700
commita48b090dc69f397a43730ee1ec6e2f0651b45528 (patch)
tree3676cbeafa11818201a327796725d286a064cd35 /core
parentd1146e20155fc01512af39ef50ab7ed44554acc6 (diff)
downloadgrpc-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.java8
-rw-r--r--core/src/test/java/io/grpc/internal/ProxyDetectorImplTest.java14
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));
+ }
}