diff options
author | Paul Jensen <pauljensen@google.com> | 2015-06-25 10:07:14 -0400 |
---|---|---|
committer | Paul Jensen <pauljensen@google.com> | 2015-06-30 07:52:12 -0400 |
commit | 2f0a8974d1f45aad590829042df8cff07e989635 (patch) | |
tree | cb53504a0115069eef8fa5416fe84cae2a570186 | |
parent | 22e547ab74eb169782ddb8dc1a16dc327b7cd328 (diff) | |
download | frameworks_base-2f0a8974d1f45aad590829042df8cff07e989635.zip frameworks_base-2f0a8974d1f45aad590829042df8cff07e989635.tar.gz frameworks_base-2f0a8974d1f45aad590829042df8cff07e989635.tar.bz2 |
Log DNS results for network validation attempts
This should help aid debugging network validation failures.
Bug:19417093
Change-Id: Idb06f7334d7c14e69fd721a81a00ce3f8d529364
-rw-r--r-- | services/core/java/com/android/server/connectivity/NetworkMonitor.java | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/connectivity/NetworkMonitor.java b/services/core/java/com/android/server/connectivity/NetworkMonitor.java index 8b661e3..e472928 100644 --- a/services/core/java/com/android/server/connectivity/NetworkMonitor.java +++ b/services/core/java/com/android/server/connectivity/NetworkMonitor.java @@ -47,6 +47,7 @@ import android.telephony.CellInfoGsm; import android.telephony.CellInfoLte; import android.telephony.CellInfoWcdma; import android.telephony.TelephonyManager; +import android.text.TextUtils; import android.util.LocalLog; import android.util.LocalLog.ReadOnlyLocalLog; import android.util.Log; @@ -59,6 +60,7 @@ import com.android.server.connectivity.NetworkAgentInfo; import java.io.IOException; import java.net.HttpURLConnection; +import java.net.InetAddress; import java.net.URL; import java.util.List; import java.util.Random; @@ -643,15 +645,31 @@ public class NetworkMonitor extends StateMachine { // fact block fetching of the generate_204 URL which would lead to false negative // results for network validation. boolean fetchPac = false; - { - final ProxyInfo proxyInfo = mNetworkAgentInfo.linkProperties.getHttpProxy(); - if (proxyInfo != null && !Uri.EMPTY.equals(proxyInfo.getPacFileUrl())) { - url = new URL(proxyInfo.getPacFileUrl().toString()); - fetchPac = true; + final ProxyInfo proxyInfo = mNetworkAgentInfo.linkProperties.getHttpProxy(); + if (proxyInfo != null && !Uri.EMPTY.equals(proxyInfo.getPacFileUrl())) { + url = new URL(proxyInfo.getPacFileUrl().toString()); + fetchPac = true; + } + final StringBuffer connectInfo = new StringBuffer(); + String hostToResolve = null; + // Only resolve a host if HttpURLConnection is about to, to avoid any potentially + // unnecessary resolution. + if (proxyInfo == null || fetchPac) { + hostToResolve = url.getHost(); + } else if (proxyInfo != null) { + hostToResolve = proxyInfo.getHost(); + } + if (!TextUtils.isEmpty(hostToResolve)) { + connectInfo.append(", " + hostToResolve + "="); + final InetAddress[] addresses = + mNetworkAgentInfo.network.getAllByName(hostToResolve); + for (InetAddress address : addresses) { + connectInfo.append(address.getHostAddress()); + if (address != addresses[addresses.length-1]) connectInfo.append(","); } } validationLog("Checking " + url.toString() + " on " + - mNetworkAgentInfo.networkInfo.getExtraInfo()); + mNetworkAgentInfo.networkInfo.getExtraInfo() + connectInfo); urlConnection = (HttpURLConnection) mNetworkAgentInfo.network.openConnection(url); urlConnection.setInstanceFollowRedirects(fetchPac); urlConnection.setConnectTimeout(SOCKET_TIMEOUT_MS); |