diff options
author | Paul Jensen <pauljensen@google.com> | 2015-07-01 12:43:13 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-07-01 12:43:15 +0000 |
commit | 72a77993bdbc2cec49714b73d222ff213be44041 (patch) | |
tree | bda0acaad3252bbf11e47cfb2774606824a5394e | |
parent | 35daa43e5d5b3b614b837f57a06c8b7c7d87cb55 (diff) | |
parent | 2f0a8974d1f45aad590829042df8cff07e989635 (diff) | |
download | frameworks_base-72a77993bdbc2cec49714b73d222ff213be44041.zip frameworks_base-72a77993bdbc2cec49714b73d222ff213be44041.tar.gz frameworks_base-72a77993bdbc2cec49714b73d222ff213be44041.tar.bz2 |
Merge "Log DNS results for network validation attempts" into mnc-dev
-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); |