diff options
author | Chiachang Wang <chiachangwang@google.com> | 2019-05-15 11:56:10 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-05-15 11:56:10 +0000 |
commit | 036871beb867e828c3487c6dee2886e0e194453c (patch) | |
tree | 3866d663370dab9cd15ed89ba9fce1ae32d63ca0 /packages/NetworkStack | |
parent | bca73ac0c6903885ea667bbf9bc1231562d4f602 (diff) | |
parent | 3134eb413fe165179f0fbef7bd4a611004307a7b (diff) |
Merge "Fix a bug where private DNS to v4-only servers don't validate." into qt-dev
Diffstat (limited to 'packages/NetworkStack')
-rw-r--r-- | packages/NetworkStack/src/com/android/networkstack/util/DnsUtils.java | 23 | ||||
-rw-r--r-- | packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java | 5 |
2 files changed, 20 insertions, 8 deletions
diff --git a/packages/NetworkStack/src/com/android/networkstack/util/DnsUtils.java b/packages/NetworkStack/src/com/android/networkstack/util/DnsUtils.java index 85f94e17a088..4767d5574a00 100644 --- a/packages/NetworkStack/src/com/android/networkstack/util/DnsUtils.java +++ b/packages/NetworkStack/src/com/android/networkstack/util/DnsUtils.java @@ -55,12 +55,23 @@ public class DnsUtils { throws UnknownHostException { final List<InetAddress> result = new ArrayList<InetAddress>(); - result.addAll(Arrays.asList( - getAllByName(dnsResolver, network, host, TYPE_AAAA, FLAG_NO_CACHE_LOOKUP, - timeout))); - result.addAll(Arrays.asList( - getAllByName(dnsResolver, network, host, TYPE_A, FLAG_NO_CACHE_LOOKUP, - timeout))); + try { + result.addAll(Arrays.asList( + getAllByName(dnsResolver, network, host, TYPE_AAAA, FLAG_NO_CACHE_LOOKUP, + timeout))); + } catch (UnknownHostException e) { + // Might happen if the host is v4-only, still need to query TYPE_A + } + try { + result.addAll(Arrays.asList( + getAllByName(dnsResolver, network, host, TYPE_A, FLAG_NO_CACHE_LOOKUP, + timeout))); + } catch (UnknownHostException e) { + // Might happen if the host is v6-only, still need to return AAAA answers + } + if (result.size() == 0) { + throw new UnknownHostException(host); + } return result.toArray(new InetAddress[0]); } diff --git a/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java b/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java index abfb9c8ae282..26186751c282 100644 --- a/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java +++ b/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java @@ -297,9 +297,10 @@ public class NetworkMonitorTest { setOtherFallbackUrls(TEST_OTHER_FALLBACK_URL); setFallbackSpecs(null); // Test with no fallback spec by default when(mRandom.nextInt()).thenReturn(0); - + // DNS probe timeout should not be defined more than half of HANDLER_TIMEOUT_MS. Otherwise, + // it will fail the test because of timeout expired for querying AAAA and A sequentially. when(mResources.getInteger(eq(R.integer.config_captive_portal_dns_probe_timeout))) - .thenReturn(500); + .thenReturn(200); doAnswer((invocation) -> { URL url = invocation.getArgument(0); |