diff options
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/net/ConnectivityManager.java | 2 | ||||
| -rw-r--r-- | core/java/android/net/Network.java | 21 | ||||
| -rw-r--r-- | core/java/android/net/SntpClient.java | 9 |
3 files changed, 18 insertions, 14 deletions
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index fb916d38f3ba..ce1879620ce3 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -3840,7 +3840,7 @@ public class ConnectivityManager { @UnsupportedAppUsage public static boolean setProcessDefaultNetworkForHostResolution(Network network) { return NetworkUtils.bindProcessToNetworkForHostResolution( - network == null ? NETID_UNSET : network.netId); + (network == null) ? NETID_UNSET : network.getNetIdForResolv()); } /** diff --git a/core/java/android/net/Network.java b/core/java/android/net/Network.java index 142023d40c0e..bf2344d4a9f6 100644 --- a/core/java/android/net/Network.java +++ b/core/java/android/net/Network.java @@ -100,21 +100,29 @@ public class Network implements Parcelable { // anytime and (b) receivers should be explicit about attempts to bypass // Private DNS so that the intent of the code is easily determined and // code search audits are possible. - private boolean mPrivateDnsBypass = false; + private final transient boolean mPrivateDnsBypass; /** * @hide */ @UnsupportedAppUsage public Network(int netId) { + this(netId, false); + } + + /** + * @hide + */ + public Network(int netId, boolean privateDnsBypass) { this.netId = netId; + this.mPrivateDnsBypass = privateDnsBypass; } /** * @hide */ public Network(Network that) { - this.netId = that.netId; + this(that.netId, that.mPrivateDnsBypass); } /** @@ -133,8 +141,7 @@ public class Network implements Parcelable { * Operates the same as {@code InetAddress.getByName} except that host * resolution is done on this network. * - * @param host - * the hostName to be resolved to an address or {@code null}. + * @param host the hostname to be resolved to an address or {@code null}. * @return the {@code InetAddress} instance representing the host. * @throws UnknownHostException * if the address lookup fails. @@ -144,14 +151,14 @@ public class Network implements Parcelable { } /** - * Specify whether or not Private DNS should be bypassed when attempting + * Obtain a Network object for which Private DNS is to be bypassed when attempting * to use {@link #getAllByName(String)}/{@link #getByName(String)} methods on the given * instance for hostname resolution. * * @hide */ - public void setPrivateDnsBypass(boolean bypass) { - mPrivateDnsBypass = bypass; + public Network getPrivateDnsBypassingCopy() { + return new Network(netId, true); } /** diff --git a/core/java/android/net/SntpClient.java b/core/java/android/net/SntpClient.java index 10c0ce25e97b..b8d7cf167ca8 100644 --- a/core/java/android/net/SntpClient.java +++ b/core/java/android/net/SntpClient.java @@ -85,19 +85,16 @@ public class SntpClient { * @return true if the transaction was successful. */ public boolean requestTime(String host, int timeout, Network network) { - // This flag only affects DNS resolution and not other socket semantics, - // therefore it's safe to set unilaterally rather than take more - // defensive measures like making a copy. - network.setPrivateDnsBypass(true); + final Network networkForResolv = network.getPrivateDnsBypassingCopy(); InetAddress address = null; try { - address = network.getByName(host); + address = networkForResolv.getByName(host); } catch (Exception e) { EventLogTags.writeNtpFailure(host, e.toString()); if (DBG) Log.d(TAG, "request time failed: " + e); return false; } - return requestTime(address, NTP_PORT, timeout, network); + return requestTime(address, NTP_PORT, timeout, networkForResolv); } public boolean requestTime(InetAddress address, int port, int timeout, Network network) { |
