Loading services/core/java/com/android/server/ConnectivityService.java +0 −4 Original line number Original line Diff line number Diff line Loading @@ -3417,10 +3417,6 @@ public class ConnectivityService extends IConnectivityManager.Stub Slog.w(TAG, "User " + userId + " has no Vpn configuration"); Slog.w(TAG, "User " + userId + " has no Vpn configuration"); return false; return false; } } // If the current VPN package is the same as the new one, this is a no-op if (TextUtils.equals(packageName, vpn.getAlwaysOnPackage())) { return true; } if (!vpn.setAlwaysOnPackage(packageName, lockdown)) { if (!vpn.setAlwaysOnPackage(packageName, lockdown)) { return false; return false; } } Loading services/core/java/com/android/server/connectivity/Vpn.java +18 −7 Original line number Original line Diff line number Diff line Loading @@ -259,28 +259,39 @@ public class Vpn { * * * @param packageName the package to designate as always-on VPN supplier. * @param packageName the package to designate as always-on VPN supplier. * @param lockdown whether to prevent traffic outside of a VPN, for example while connecting. * @param lockdown whether to prevent traffic outside of a VPN, for example while connecting. * @return {@code true} if the package has been set as always-on, {@code false} otherwise. */ */ public synchronized boolean setAlwaysOnPackage(String packageName, boolean lockdown) { public synchronized boolean setAlwaysOnPackage(String packageName, boolean lockdown) { enforceControlPermissionOrInternalCaller(); enforceControlPermissionOrInternalCaller(); if (VpnConfig.LEGACY_VPN.equals(packageName)) { Log.w(TAG, "Not setting legacy VPN \"" + packageName + "\" as always-on."); return false; } // Disconnect current VPN. prepareInternal(VpnConfig.LEGACY_VPN); // Pre-authorize new always-on VPN package. if (packageName != null) { if (packageName != null) { // Pre-authorize new always-on VPN package. if (!setPackageAuthorization(packageName, true)) { if (!setPackageAuthorization(packageName, true)) { return false; return false; } } prepareInternal(packageName); mAlwaysOn = true; } else { packageName = VpnConfig.LEGACY_VPN; mAlwaysOn = false; } } mAlwaysOn = (packageName != null); mLockdown = (mAlwaysOn && lockdown); mLockdown = (mAlwaysOn && lockdown); if (!isCurrentPreparedPackage(packageName)) { prepareInternal(packageName); } maybeRegisterPackageChangeReceiverLocked(packageName); maybeRegisterPackageChangeReceiverLocked(packageName); setVpnForcedLocked(mLockdown); setVpnForcedLocked(mLockdown); return true; return true; } } private static boolean isNullOrLegacyVpn(String packageName) { return packageName == null || VpnConfig.LEGACY_VPN.equals(packageName); } private void unregisterPackageChangeReceiverLocked() { private void unregisterPackageChangeReceiverLocked() { // register previous intent filter // register previous intent filter if (mIsPackageIntentReceiverRegistered) { if (mIsPackageIntentReceiverRegistered) { Loading @@ -293,7 +304,7 @@ public class Vpn { // Unregister IntentFilter listening for previous always-on package change // Unregister IntentFilter listening for previous always-on package change unregisterPackageChangeReceiverLocked(); unregisterPackageChangeReceiverLocked(); if (packageName != null) { if (!isNullOrLegacyVpn(packageName)) { mIsPackageIntentReceiverRegistered = true; mIsPackageIntentReceiverRegistered = true; IntentFilter intentFilter = new IntentFilter(); IntentFilter intentFilter = new IntentFilter(); Loading Loading
services/core/java/com/android/server/ConnectivityService.java +0 −4 Original line number Original line Diff line number Diff line Loading @@ -3417,10 +3417,6 @@ public class ConnectivityService extends IConnectivityManager.Stub Slog.w(TAG, "User " + userId + " has no Vpn configuration"); Slog.w(TAG, "User " + userId + " has no Vpn configuration"); return false; return false; } } // If the current VPN package is the same as the new one, this is a no-op if (TextUtils.equals(packageName, vpn.getAlwaysOnPackage())) { return true; } if (!vpn.setAlwaysOnPackage(packageName, lockdown)) { if (!vpn.setAlwaysOnPackage(packageName, lockdown)) { return false; return false; } } Loading
services/core/java/com/android/server/connectivity/Vpn.java +18 −7 Original line number Original line Diff line number Diff line Loading @@ -259,28 +259,39 @@ public class Vpn { * * * @param packageName the package to designate as always-on VPN supplier. * @param packageName the package to designate as always-on VPN supplier. * @param lockdown whether to prevent traffic outside of a VPN, for example while connecting. * @param lockdown whether to prevent traffic outside of a VPN, for example while connecting. * @return {@code true} if the package has been set as always-on, {@code false} otherwise. */ */ public synchronized boolean setAlwaysOnPackage(String packageName, boolean lockdown) { public synchronized boolean setAlwaysOnPackage(String packageName, boolean lockdown) { enforceControlPermissionOrInternalCaller(); enforceControlPermissionOrInternalCaller(); if (VpnConfig.LEGACY_VPN.equals(packageName)) { Log.w(TAG, "Not setting legacy VPN \"" + packageName + "\" as always-on."); return false; } // Disconnect current VPN. prepareInternal(VpnConfig.LEGACY_VPN); // Pre-authorize new always-on VPN package. if (packageName != null) { if (packageName != null) { // Pre-authorize new always-on VPN package. if (!setPackageAuthorization(packageName, true)) { if (!setPackageAuthorization(packageName, true)) { return false; return false; } } prepareInternal(packageName); mAlwaysOn = true; } else { packageName = VpnConfig.LEGACY_VPN; mAlwaysOn = false; } } mAlwaysOn = (packageName != null); mLockdown = (mAlwaysOn && lockdown); mLockdown = (mAlwaysOn && lockdown); if (!isCurrentPreparedPackage(packageName)) { prepareInternal(packageName); } maybeRegisterPackageChangeReceiverLocked(packageName); maybeRegisterPackageChangeReceiverLocked(packageName); setVpnForcedLocked(mLockdown); setVpnForcedLocked(mLockdown); return true; return true; } } private static boolean isNullOrLegacyVpn(String packageName) { return packageName == null || VpnConfig.LEGACY_VPN.equals(packageName); } private void unregisterPackageChangeReceiverLocked() { private void unregisterPackageChangeReceiverLocked() { // register previous intent filter // register previous intent filter if (mIsPackageIntentReceiverRegistered) { if (mIsPackageIntentReceiverRegistered) { Loading @@ -293,7 +304,7 @@ public class Vpn { // Unregister IntentFilter listening for previous always-on package change // Unregister IntentFilter listening for previous always-on package change unregisterPackageChangeReceiverLocked(); unregisterPackageChangeReceiverLocked(); if (packageName != null) { if (!isNullOrLegacyVpn(packageName)) { mIsPackageIntentReceiverRegistered = true; mIsPackageIntentReceiverRegistered = true; IntentFilter intentFilter = new IntentFilter(); IntentFilter intentFilter = new IntentFilter(); Loading