Merge "Stop using VPNs in getActiveNetworkForUidInternal."

This commit is contained in:
Lorenzo Colitti
2021-01-13 13:52:56 +00:00
committed by Gerrit Code Review

View File

@@ -28,7 +28,6 @@ import static android.net.ConnectivityDiagnosticsManager.DataStallReport.KEY_DNS
import static android.net.ConnectivityDiagnosticsManager.DataStallReport.KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS; import static android.net.ConnectivityDiagnosticsManager.DataStallReport.KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS;
import static android.net.ConnectivityDiagnosticsManager.DataStallReport.KEY_TCP_PACKET_FAIL_RATE; import static android.net.ConnectivityDiagnosticsManager.DataStallReport.KEY_TCP_PACKET_FAIL_RATE;
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION; import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
import static android.net.ConnectivityManager.NETID_UNSET;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
import static android.net.ConnectivityManager.TYPE_ETHERNET; import static android.net.ConnectivityManager.TYPE_ETHERNET;
import static android.net.ConnectivityManager.TYPE_NONE; import static android.net.ConnectivityManager.TYPE_NONE;
@@ -1444,32 +1443,21 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
private Network getActiveNetworkForUidInternal(final int uid, boolean ignoreBlocked) { private Network getActiveNetworkForUidInternal(final int uid, boolean ignoreBlocked) {
final int user = UserHandle.getUserId(uid); final NetworkAgentInfo vpnNai = getVpnForUid(uid);
int vpnNetId = NETID_UNSET; if (vpnNai != null) {
synchronized (mVpns) { final NetworkCapabilities requiredCaps = createDefaultNetworkCapabilitiesForUid(uid);
final Vpn vpn = mVpns.get(user); if (requiredCaps.satisfiedByNetworkCapabilities(vpnNai.networkCapabilities)) {
// TODO : now that capabilities contain the UID, the appliesToUid test should return vpnNai.network;
// be removed as the satisfying test below should be enough. }
if (vpn != null && vpn.appliesToUid(uid)) vpnNetId = vpn.getNetId(); }
NetworkAgentInfo nai = getDefaultNetwork();
if (nai == null || isNetworkWithCapabilitiesBlocked(nai.networkCapabilities, uid,
ignoreBlocked)) {
return null;
} }
NetworkAgentInfo nai;
if (vpnNetId != NETID_UNSET) {
nai = getNetworkAgentInfoForNetId(vpnNetId);
if (nai != null) {
final NetworkCapabilities requiredCaps =
createDefaultNetworkCapabilitiesForUid(uid);
if (requiredCaps.satisfiedByNetworkCapabilities(nai.networkCapabilities)) {
return nai.network; return nai.network;
} }
}
}
nai = getDefaultNetwork();
if (nai != null && isNetworkWithCapabilitiesBlocked(
nai.networkCapabilities, uid, ignoreBlocked)) {
nai = null;
}
return nai != null ? nai.network : null;
}
// Public because it's used by mLockdownTracker. // Public because it's used by mLockdownTracker.
public NetworkInfo getActiveNetworkInfoUnfiltered() { public NetworkInfo getActiveNetworkInfoUnfiltered() {
@@ -4830,6 +4818,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (mLockdownEnabled) { if (mLockdownEnabled) {
return new VpnInfo[0]; return new VpnInfo[0];
} }
}
List<VpnInfo> infoList = new ArrayList<>(); List<VpnInfo> infoList = new ArrayList<>();
for (NetworkAgentInfo nai : mNetworkAgentInfos) { for (NetworkAgentInfo nai : mNetworkAgentInfos) {
VpnInfo info = createVpnInfo(nai); VpnInfo info = createVpnInfo(nai);
@@ -4839,7 +4828,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
return infoList.toArray(new VpnInfo[infoList.size()]); return infoList.toArray(new VpnInfo[infoList.size()]);
} }
}
/** /**
* @return VPN information for accounting, or null if we can't retrieve all required * @return VPN information for accounting, or null if we can't retrieve all required