diff options
-rw-r--r-- | core/java/android/net/ConnectivityManager.java | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 41a32a1df902..160157771b18 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -3970,13 +3970,17 @@ public class ConnectivityManager { @Deprecated public static boolean setProcessDefaultNetwork(@Nullable Network network) { int netId = (network == null) ? NETID_UNSET : network.netId; - if (netId == NetworkUtils.getBoundNetworkForProcess()) { - return true; - } + boolean isSameNetId = (netId == NetworkUtils.getBoundNetworkForProcess()); + if (netId != NETID_UNSET) { netId = network.getNetIdForResolv(); } - if (NetworkUtils.bindProcessToNetwork(netId)) { + + if (!NetworkUtils.bindProcessToNetwork(netId)) { + return false; + } + + if (!isSameNetId) { // Set HTTP proxy system properties to match network. // TODO: Deprecate this static method and replace it with a non-static version. try { @@ -3990,10 +3994,9 @@ public class ConnectivityManager { // Must flush socket pool as idle sockets will be bound to previous network and may // cause subsequent fetches to be performed on old network. NetworkEventDispatcher.getInstance().onNetworkConfigurationChanged(); - return true; - } else { - return false; } + + return true; } /** |