Fix the reporting of NO_CONNECTIVITY.

A refactoring of handleDisconnect instroduced a bug - we were reporting
NO_CONNECTIVITY after any non-primary network (supl, mms, hipri) was lost.

bug:2395006

Change-Id: Ifa9e008872ec646981a35f2c316120cb9685a6a4
This commit is contained in:
Robert Greenwalt
2010-01-25 17:54:29 -08:00
parent 24e2d2b0e5
commit 3cc68d3379

View File

@@ -811,12 +811,15 @@ public class ConnectivityService extends IConnectivityManager.Stub {
info.getExtraInfo());
}
NetworkStateTracker newNet = tryFailover(prevNetType);
if (newNet != null) {
NetworkInfo switchTo = newNet.getNetworkInfo();
intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo);
} else {
intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);
NetworkStateTracker newNet = null;
if (mNetAttributes[prevNetType].isDefault()) {
newNet = tryFailover(prevNetType);
if (newNet != null) {
NetworkInfo switchTo = newNet.getNetworkInfo();
intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo);
} else {
intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);
}
}
// do this before we broadcast the change
handleConnectivityChange();
@@ -831,7 +834,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
}
}
// returns -1 if no failover available
// returns null if no failover available
private NetworkStateTracker tryFailover(int prevNetType) {
/*
* If this is a default network, check if other defaults are available
@@ -953,13 +956,17 @@ public class ConnectivityService extends IConnectivityManager.Stub {
info.setFailover(false);
}
NetworkStateTracker newNet = tryFailover(info.getType());
if (newNet != null) {
NetworkInfo switchTo = newNet.getNetworkInfo();
intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo);
} else {
intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);
NetworkStateTracker newNet = null;
if (mNetAttributes[info.getType()].isDefault()) {
newNet = tryFailover(info.getType());
if (newNet != null) {
NetworkInfo switchTo = newNet.getNetworkInfo();
intent.putExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO, switchTo);
} else {
intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);
}
}
// do this before we broadcast the change
handleConnectivityChange();