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 | efc0b155c06c5b3bba534313e38ff7f7d207b2c3 (patch) | |
tree | 068a8179903d6dfff8b37900b1b7690c7be34e0b /src | |
parent | e2503a24b011de345a1d87e4a54bc7fc1477545a (diff) | |
parent | 993f1c9671b4549ab969619b90dc682b8d223617 (diff) |
Merge "Fix a bug where private DNS to v4-only servers don't validate." into qt-dev
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/networkstack/util/DnsUtils.java | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/com/android/networkstack/util/DnsUtils.java b/src/com/android/networkstack/util/DnsUtils.java index 85f94e1..4767d55 100644 --- a/src/com/android/networkstack/util/DnsUtils.java +++ b/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]); } |