Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b04a5eab authored by Victor Chang's avatar Victor Chang
Browse files

Fix that fail to setup any vpn after Network Settings reset and always-on vpn is on

Cause: It revoked the user consent of the vpn app without reseting always-on vpn.
In addition, prepareVpn sets legacy vpn as the current package, the state in
Vpn.class is broken, as it thought the current always-on package is legacy vpn,
(mAlwaysOn is only for app vpn, not for legacy vpn). As a result, prepareVpn rejects
all VpnService.prepare.

Bug: 29031820
Change-Id: Id6bf1d6f38cf134a872811806301b8a602fb5725
parent aa2e0234
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -5202,6 +5202,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
        }

        if (!mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)) {
            // Remove always-on package
            synchronized (mVpns) {
                final String alwaysOnPackage = getAlwaysOnVpnPackage(userId);
                if (alwaysOnPackage != null) {
                    setAlwaysOnVpnPackage(userId, null, false);
                    setVpnPackageAuthorization(alwaysOnPackage, userId, false);
                }
            }

            // Turn VPN off
            VpnConfig vpnConfig = getVpnConfig(userId);
            if (vpnConfig != null) {
@@ -5212,7 +5221,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
                    // in the future without user intervention.
                    setVpnPackageAuthorization(vpnConfig.user, userId, false);

                    prepareVpn(vpnConfig.user, VpnConfig.LEGACY_VPN, userId);
                    prepareVpn(null, VpnConfig.LEGACY_VPN, userId);
                }
            }
        }