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

Commit 259528f8 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk Committed by Hung-ying Tyan
Browse files

VPN: fix crash on missing CCM

Bug: 350408964
Bug: 380379231
Test: atest CtsNetTestCases:android.net.cts.Ikev2VpnTest#testStartProvisionedVpnV4ProfileSession
Flag: EXEMPT bugfix
Change-Id: I2f08fb2fba667afa34f9951ff193bcb9d12683a6
Merged-In: I2f08fb2fba667afa34f9951ff193bcb9d12683a6
(cherry picked from commit 443980d0)
parent 5ef29ae2
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -344,7 +344,11 @@ public class Vpn {
    private final AppOpsManager mAppOpsManager;
    private final ConnectivityDiagnosticsManager mConnectivityDiagnosticsManager;
    private final TelephonyManager mTelephonyManager;

    // null if FEATURE_TELEPHONY_SUBSCRIPTION is not declared
    @Nullable
    private final CarrierConfigManager mCarrierConfigManager;

    private final SubscriptionManager mSubscriptionManager;

    // The context is for specific user which is created from mUserId
@@ -2837,9 +2841,11 @@ public class Vpn {
                    createUserAndRestrictedProfilesRanges(mUserId,
                            mConfig.allowedApplications, mConfig.disallowedApplications));

            if (mCarrierConfigManager != null) {
                mCarrierConfigManager.registerCarrierConfigChangeListener(mExecutor,
                        mCarrierConfigChangeListener);
            }
        }

        @Override
        public void run() {
@@ -3343,6 +3349,10 @@ public class Vpn {
         */
        @Nullable
        private CarrierConfigInfo getCarrierConfigForUnderlyingNetwork() {
            if (mCarrierConfigManager == null) {
                return null;
            }

            final int subId = getCellSubIdForNetworkCapabilities(mUnderlyingNetworkCapabilities);
            if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
                Log.d(TAG, "Underlying network is not a cellular network");
@@ -3962,8 +3972,10 @@ public class Vpn {

            resetIkeState();

            if (mCarrierConfigManager != null) {
                mCarrierConfigManager.unregisterCarrierConfigChangeListener(
                        mCarrierConfigChangeListener);
            }
            mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);

            mExecutor.shutdown();