diff options
| -rw-r--r-- | core/java/android/net/metrics/ValidationProbeEvent.java | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/connectivity/NetworkMonitor.java | 20 |
2 files changed, 19 insertions, 2 deletions
diff --git a/core/java/android/net/metrics/ValidationProbeEvent.java b/core/java/android/net/metrics/ValidationProbeEvent.java index 1ad0929b1773..12c2305dd78e 100644 --- a/core/java/android/net/metrics/ValidationProbeEvent.java +++ b/core/java/android/net/metrics/ValidationProbeEvent.java @@ -37,6 +37,7 @@ public final class ValidationProbeEvent implements Parcelable { public static final int PROBE_HTTPS = 2; public static final int PROBE_PAC = 3; public static final int PROBE_FALLBACK = 4; + public static final int PROBE_PRIVDNS = 5; public static final int DNS_FAILURE = 0; public static final int DNS_SUCCESS = 1; diff --git a/services/core/java/com/android/server/connectivity/NetworkMonitor.java b/services/core/java/com/android/server/connectivity/NetworkMonitor.java index 9b9a3801aea1..59beef25bbdd 100644 --- a/services/core/java/com/android/server/connectivity/NetworkMonitor.java +++ b/services/core/java/com/android/server/connectivity/NetworkMonitor.java @@ -21,7 +21,10 @@ import static android.net.CaptivePortal.APP_RETURN_UNWANTED; import static android.net.CaptivePortal.APP_RETURN_WANTED_AS_IS; import static android.net.ConnectivityManager.EXTRA_CAPTIVE_PORTAL_PROBE_SPEC; import static android.net.ConnectivityManager.EXTRA_CAPTIVE_PORTAL_URL; +import static android.net.metrics.ValidationProbeEvent.DNS_FAILURE; +import static android.net.metrics.ValidationProbeEvent.DNS_SUCCESS; import static android.net.metrics.ValidationProbeEvent.PROBE_FALLBACK; +import static android.net.metrics.ValidationProbeEvent.PROBE_PRIVDNS; import android.annotation.Nullable; import android.app.PendingIntent; @@ -799,8 +802,10 @@ public class NetworkMonitor extends StateMachine { final InetAddress[] ips = ResolvUtil.blockingResolveAllLocally( mNetwork, mPrivateDnsProviderHostname, 0 /* aiFlags */); mPrivateDnsConfig = new PrivateDnsConfig(mPrivateDnsProviderHostname, ips); + validationLog("Strict mode hostname resolved: " + mPrivateDnsConfig); } catch (UnknownHostException uhe) { mPrivateDnsConfig = null; + validationLog("Strict mode hostname resolution failed: " + uhe.getMessage()); } } @@ -829,10 +834,21 @@ public class NetworkMonitor extends StateMachine { final String ONE_TIME_HOSTNAME_SUFFIX = "-dnsotls-ds.metric.gstatic.com"; final String host = UUID.randomUUID().toString().substring(0, 8) + ONE_TIME_HOSTNAME_SUFFIX; + final Stopwatch watch = new Stopwatch().start(); try { final InetAddress[] ips = mNetworkAgentInfo.network().getAllByName(host); - return (ips != null && ips.length > 0); - } catch (UnknownHostException uhe) {} + final long time = watch.stop(); + final String strIps = Arrays.toString(ips); + final boolean success = (ips != null && ips.length > 0); + validationLog(PROBE_PRIVDNS, host, String.format("%dms: %s", time, strIps)); + logValidationProbe(time, PROBE_PRIVDNS, success ? DNS_SUCCESS : DNS_FAILURE); + return success; + } catch (UnknownHostException uhe) { + final long time = watch.stop(); + validationLog(PROBE_PRIVDNS, host, + String.format("%dms - Error: %s", time, uhe.getMessage())); + logValidationProbe(time, PROBE_PRIVDNS, DNS_FAILURE); + } return false; } } |