diff options
| author | Robert Greenwalt <rgreenwalt@google.com> | 2011-03-30 09:30:15 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2011-03-30 09:30:15 -0700 |
| commit | ce6766ea51a943b9f8908cb18d0d9762497b478c (patch) | |
| tree | cb3bc895093ac76608b863466d0abf617a9f64bc /services/java/com/android/server/ConnectivityService.java | |
| parent | 5e1383f25782e553294bca387f3c072073416416 (diff) | |
| parent | 568845a766cddc4e4c222b4d9de064f8a48da990 (diff) | |
am 568845a7: Merge "Fix some alt-network issues." into gingerbread
* commit '568845a766cddc4e4c222b4d9de064f8a48da990':
Fix some alt-network issues.
Diffstat (limited to 'services/java/com/android/server/ConnectivityService.java')
| -rw-r--r-- | services/java/com/android/server/ConnectivityService.java | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 97fd8046f1e4..4145854da2d0 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -594,18 +594,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { */ public NetworkInfo getActiveNetworkInfo() { enforceAccessPermission(); - 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) Slog.e(TAG, - "connected default network is not " + - "mActiveDefaultNetwork!"); - return info; - } + if (mActiveDefaultNetwork != -1) { + return mNetTrackers[mActiveDefaultNetwork].getNetworkInfo(); } return null; } @@ -1369,6 +1359,15 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (mNetAttributes[netType].isDefault()) { mNetTrackers[netType].addDefaultRoute(); } 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) { + String defaultIface = mNetTrackers[mActiveDefaultNetwork].getInterfaceName(); + if (defaultIface != null && + !defaultIface.equals(mNetTrackers[netType].getInterfaceName())) { + mNetTrackers[netType].removeDefaultRoute(); + } + } mNetTrackers[netType].addPrivateDnsRoutes(); } } else { |
