am 00ca322d: am 5f350512: Merge "Reset connections AFTER we take down the network." into honeycomb-LTE

* commit '00ca322d5d99056b47a74075e2d2c8b464bbdbc1':
  Reset connections AFTER we take down the network.
This commit is contained in:
Robert Greenwalt
2011-06-16 12:50:46 -07:00
committed by Android Git Automerger

View File

@@ -1267,8 +1267,30 @@ public class ConnectivityService extends IConnectivityManager.Stub {
} }
} }
intent.putExtra(ConnectivityManager.EXTRA_INET_CONDITION, mDefaultInetConditionPublished); intent.putExtra(ConnectivityManager.EXTRA_INET_CONDITION, mDefaultInetConditionPublished);
// Reset interface if no other connections are using the same interface
boolean doReset = true;
LinkProperties linkProperties = mNetTrackers[prevNetType].getLinkProperties();
if (linkProperties != null) {
String oldIface = linkProperties.getInterfaceName();
if (TextUtils.isEmpty(oldIface) == false) {
for (NetworkStateTracker networkStateTracker : mNetTrackers) {
if (networkStateTracker == null) continue;
NetworkInfo networkInfo = networkStateTracker.getNetworkInfo();
if (networkInfo.isConnected() && networkInfo.getType() != prevNetType) {
LinkProperties l = networkStateTracker.getLinkProperties();
if (l == null) continue;
if (oldIface.equals(l.getInterfaceName())) {
doReset = false;
break;
}
}
}
}
}
// do this before we broadcast the change // do this before we broadcast the change
handleConnectivityChange(prevNetType); handleConnectivityChange(prevNetType, doReset);
sendStickyBroadcast(intent); sendStickyBroadcast(intent);
/* /*
@@ -1490,7 +1512,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
} }
thisNet.setTeardownRequested(false); thisNet.setTeardownRequested(false);
updateNetworkSettings(thisNet); updateNetworkSettings(thisNet);
handleConnectivityChange(type); handleConnectivityChange(type, false);
sendConnectedBroadcast(info); sendConnectedBroadcast(info);
} }
@@ -1500,7 +1522,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
* according to which networks are connected, and ensuring that the * according to which networks are connected, and ensuring that the
* right routing table entries exist. * right routing table entries exist.
*/ */
private void handleConnectivityChange(int netType) { private void handleConnectivityChange(int netType, boolean doReset) {
/* /*
* If a non-default network is enabled, add the host routes that * If a non-default network is enabled, add the host routes that
* will allow it's DNS servers to be accessed. * will allow it's DNS servers to be accessed.
@@ -1540,6 +1562,17 @@ public class ConnectivityService extends IConnectivityManager.Stub {
removePrivateDnsRoutes(mNetTrackers[netType]); removePrivateDnsRoutes(mNetTrackers[netType]);
} }
} }
if (doReset) {
LinkProperties linkProperties = mNetTrackers[netType].getLinkProperties();
if (linkProperties != null) {
String iface = linkProperties.getInterfaceName();
if (TextUtils.isEmpty(iface) == false) {
if (DBG) log("resetConnections(" + iface + ")");
NetworkUtils.resetConnections(iface);
}
}
}
} }
private void addPrivateDnsRoutes(NetworkStateTracker nt) { private void addPrivateDnsRoutes(NetworkStateTracker nt) {
@@ -1965,7 +1998,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
break; break;
case NetworkStateTracker.EVENT_CONFIGURATION_CHANGED: case NetworkStateTracker.EVENT_CONFIGURATION_CHANGED:
info = (NetworkInfo) msg.obj; info = (NetworkInfo) msg.obj;
handleConnectivityChange(info.getType()); handleConnectivityChange(info.getType(), true);
break; break;
case EVENT_CLEAR_NET_TRANSITION_WAKELOCK: case EVENT_CLEAR_NET_TRANSITION_WAKELOCK:
String causedBy = null; String causedBy = null;