From 84dd61d2113ff6c2d044023a0396849162bf586c Mon Sep 17 00:00:00 2001 From: chiachangwang Date: Mon, 6 Mar 2023 13:52:49 +0000 Subject: [PATCH] Prevent migrating the session from using the wrong value Migrating the IKE session requires reading the subId information from network capabilities. A new default network change will start with an onAailable callback and start the migration. But Vpn does not yet get the new network capabilities. The migration should not be processed until receiving network capabilities change. Bug: 269714970 Test: atest FrameworksNetTests Change-Id: I1d2eb9647cd3a0434ba656671926eb504abbf150 --- .../java/com/android/server/connectivity/Vpn.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index c39b4ffcf3522..6d3f8fd772329 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -3302,8 +3302,6 @@ public class Vpn { mUnderlyingLinkProperties = null; mUnderlyingNetworkCapabilities = null; mRetryCount = 0; - - startOrMigrateIkeSession(network); } @NonNull @@ -3530,11 +3528,11 @@ public class Vpn { public void onDefaultNetworkCapabilitiesChanged(@NonNull NetworkCapabilities nc) { final NetworkCapabilities oldNc = mUnderlyingNetworkCapabilities; mUnderlyingNetworkCapabilities = nc; - // The oldNc may be null when it's not assigned yet. - final boolean subIdChanged = - (oldNc == null) || !nc.getSubscriptionIds().equals(oldNc.getSubscriptionIds()); - // Update carrierConfig. - if (subIdChanged) { + if (oldNc == null) { + // A new default network is available. + startOrMigrateIkeSession(mActiveNetwork); + } else if (!nc.getSubscriptionIds().equals(oldNc.getSubscriptionIds())) { + // Renew carrierConfig values. maybeMigrateIkeSession(mActiveNetwork); } }