diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 0271d3bcb57ca..1275302cd8c94 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -1141,7 +1141,11 @@ public class Vpn { } } catch (RuntimeException e) { IoUtils.closeQuietly(tun); - agentDisconnect(); + // If this is not seamless handover, disconnect partially-established network when error + // occurs. + if (oldNetworkAgent != mNetworkAgent) { + agentDisconnect(); + } // restore old state mConfig = oldConfig; mConnection = oldConnection;