summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChiachang Wang <chiachangwang@google.com>2019-05-15 15:33:46 +0800
committerChiachang Wang <chiachangwang@google.com>2019-05-15 10:40:22 +0000
commit993f1c9671b4549ab969619b90dc682b8d223617 (patch)
tree3d42784c72179a4f3a4f473c876f3cf97ac2ef6a /src
parent544ad30499aeebfca129a66ab262b80f37903517 (diff)
Fix a bug where private DNS to v4-only servers don't validate.
Bug: 132670008 Test: Manual Test: atest NetworkStackTests Change-Id: I8ae6fa6f3800f5f6c9ee88ffe3b8ada34b96dee6 Merged-In: I362d43ee6af318694a4038a257e1ebb3f577863c
Diffstat (limited to 'src')
-rw-r--r--src/com/android/networkstack/util/DnsUtils.java23
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]);
}