From 3cc68d3379689b0c970ce33a56749a61a73047bd Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Mon, 25 Jan 2010 17:54:29 -0800 Subject: [PATCH] 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 --- .../android/server/ConnectivityService.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 45eb672109..3d7025d131 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -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();