diff options
| -rw-r--r-- | services/java/com/android/server/ConnectivityService.java | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 0b0e1efaab42..12ac052617bf 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -543,8 +543,18 @@ public class ConnectivityService extends IConnectivityManager.Stub { */ public NetworkInfo getActiveNetworkInfo() { enforceAccessPermission(); - if (mActiveDefaultNetwork != -1) { - return mNetTrackers[mActiveDefaultNetwork].getNetworkInfo(); + for (int type=0; type <= ConnectivityManager.MAX_NETWORK_TYPE; type++) { + if (mNetAttributes[type] == null || !mNetAttributes[type].isDefault()) { + continue; + } + NetworkStateTracker t = mNetTrackers[type]; + NetworkInfo info = t.getNetworkInfo(); + if (info.isConnected()) { + if (DBG && type != mActiveDefaultNetwork) { + loge("connected default network is not mActiveDefaultNetwork!"); + } + return info; + } } return null; } @@ -1343,20 +1353,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { handleApplyDefaultProxy(netType); addDefaultRoute(mNetTrackers[netType]); } else { - // many radios add a default route even when we don't want one. - // remove the default interface unless we need it for our active network - if (mActiveDefaultNetwork != -1) { - LinkProperties linkProperties = - mNetTrackers[mActiveDefaultNetwork].getLinkProperties(); - LinkProperties newLinkProperties = - mNetTrackers[netType].getLinkProperties(); - String defaultIface = linkProperties.getInterfaceName(); - if (defaultIface != null && - !defaultIface.equals(newLinkProperties.getInterfaceName())) { - mNetTrackers[netType].removeDefaultRoute(); - } - } - mNetTrackers[netType].addPrivateDnsRoutes(); + addPrivateDnsRoutes(mNetTrackers[netType]); } } else { if (mNetAttributes[netType].isDefault()) { |