From 9cfd367413b010dd517840a9aab592b1cf77012b Mon Sep 17 00:00:00 2001 From: chiachangwang Date: Thu, 11 Aug 2022 01:19:01 +0000 Subject: [PATCH] Invert the order of event sending and VpnRunner.exit() Invert the order to prevent confusing VPN disconnected notification being sent before the runner actually exits. Bug: 235322391 Test: atest FrameworksNetTests Change-Id: I3b2eed8bf4de4b8dd00d4797509884ebeff9ad75 --- services/core/java/com/android/server/connectivity/Vpn.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 16a060af66ad1..b85d36da9f4ad 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -4042,9 +4042,11 @@ public class Vpn { // To stop the VPN profile, the caller must be the current prepared package and must be // running an Ikev2VpnProfile. if (isCurrentIkev2VpnLocked(packageName)) { - notifyVpnManagerVpnStopped(packageName, mOwnerUID); + // Cache ownerUid to prevent the value being changed after performing VpnRunner.exit(). + final int ownerUid = mOwnerUID; mVpnRunner.exit(); + notifyVpnManagerVpnStopped(packageName, ownerUid); } }