Fix findConnectionTypeForIface.

This is used by the VPN to notice when its underlying connection
has gone away. I'm fixing this using network types and not
NetworkCapabilities because

1. I don't know of a way to use the new API to get callbacks for
   a specific network. You can get them based on capabilities,
   but it's not clear how to construct a NetworkCapabilities
   object that will only match a specific network, or only match
   the default network.
2. It's a smaller change.

Bug: 15070628
Change-Id: Id6a6a183da83636c0859db4c954093bd684c01ea
This commit is contained in:
Lorenzo Colitti
2014-08-19 21:31:08 -07:00
parent cbec2b12ca
commit bcc9260028

View File

@@ -2798,11 +2798,13 @@ public class ConnectivityService extends IConnectivityManager.Stub {
enforceConnectivityInternalPermission();
if (TextUtils.isEmpty(iface)) return ConnectivityManager.TYPE_NONE;
for (NetworkStateTracker tracker : mNetTrackers) {
if (tracker != null) {
LinkProperties lp = tracker.getLinkProperties();
if (lp != null && iface.equals(lp.getInterfaceName())) {
return tracker.getNetworkInfo().getType();
synchronized(mNetworkForNetId) {
for (int i = 0; i < mNetworkForNetId.size(); i++) {
NetworkAgentInfo nai = mNetworkForNetId.valueAt(i);
LinkProperties lp = nai.linkProperties;
if (lp != null && iface.equals(lp.getInterfaceName()) && nai.networkInfo != null) {
return nai.networkInfo.getType();
}
}
}