diff options
| author | 2022-06-01 07:16:48 +0000 | |
|---|---|---|
| committer | 2022-06-01 07:16:48 +0000 | |
| commit | ed511881d7139e82bcb84fc4d25b7e5f938d39ec (patch) | |
| tree | 27170ca2296edbe984bed3f39e81efc8334ae680 | |
| parent | 4e6f1d8713b246b12a150476d7b2ed87e72b095d (diff) | |
| parent | f4d9a092f6c0eae7ad2ba7bfe50fd5105ce638cd (diff) | |
Merge "Revert "Improve the code of handleSessionLost()"" am: f4d9a092f6
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2112764
Change-Id: If11d094f2f9dab3852a6ef3545d540ae25028ec8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/core/java/com/android/server/connectivity/Vpn.java | 113 |
1 files changed, 80 insertions, 33 deletions
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index fae316f4962f..6920ec6a30a7 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -3159,13 +3159,8 @@ public class Vpn { cancelHandleNetworkLostTimeout(); synchronized (Vpn.this) { - String category = ""; - int errorClass = 0; - int errorCode = 0; if (exception instanceof IkeProtocolException) { final IkeProtocolException ikeException = (IkeProtocolException) exception; - category = VpnManager.CATEGORY_EVENT_IKE_ERROR; - errorCode = ikeException.getErrorType(); switch (ikeException.getErrorType()) { case IkeProtocolException.ERROR_TYPE_NO_PROPOSAL_CHOSEN: // Fallthrough @@ -3175,51 +3170,103 @@ public class Vpn { case IkeProtocolException.ERROR_TYPE_FAILED_CP_REQUIRED: // Fallthrough case IkeProtocolException.ERROR_TYPE_TS_UNACCEPTABLE: // All the above failures are configuration errors, and are terminal - errorClass = VpnManager.ERROR_CLASS_NOT_RECOVERABLE; - break; + // TODO(b/230548427): Remove SDK check once VPN related stuff are + // decoupled from ConnectivityServiceTest. + if (SdkLevel.isAtLeastT()) { + sendEventToVpnManagerApp(VpnManager.CATEGORY_EVENT_IKE_ERROR, + VpnManager.ERROR_CLASS_NOT_RECOVERABLE, + ikeException.getErrorType(), + getPackage(), mSessionKey, makeVpnProfileStateLocked(), + mActiveNetwork, + getRedactedNetworkCapabilitiesOfUnderlyingNetwork( + mUnderlyingNetworkCapabilities), + getRedactedLinkPropertiesOfUnderlyingNetwork( + mUnderlyingLinkProperties)); + } + markFailedAndDisconnect(exception); + return; // All other cases possibly recoverable. default: // All the above failures are configuration errors, and are terminal - errorClass = VpnManager.ERROR_CLASS_RECOVERABLE; + // TODO(b/230548427): Remove SDK check once VPN related stuff are + // decoupled from ConnectivityServiceTest. + if (SdkLevel.isAtLeastT()) { + sendEventToVpnManagerApp(VpnManager.CATEGORY_EVENT_IKE_ERROR, + VpnManager.ERROR_CLASS_RECOVERABLE, + ikeException.getErrorType(), + getPackage(), mSessionKey, makeVpnProfileStateLocked(), + mActiveNetwork, + getRedactedNetworkCapabilitiesOfUnderlyingNetwork( + mUnderlyingNetworkCapabilities), + getRedactedLinkPropertiesOfUnderlyingNetwork( + mUnderlyingLinkProperties)); + } } } else if (exception instanceof IllegalArgumentException) { // Failed to build IKE/ChildSessionParams; fatal profile configuration error markFailedAndDisconnect(exception); return; } else if (exception instanceof IkeNetworkLostException) { - category = VpnManager.CATEGORY_EVENT_NETWORK_ERROR; - errorClass = VpnManager.ERROR_CLASS_RECOVERABLE; - errorCode = VpnManager.ERROR_CODE_NETWORK_LOST; + // TODO(b/230548427): Remove SDK check once VPN related stuff are + // decoupled from ConnectivityServiceTest. + if (SdkLevel.isAtLeastT()) { + sendEventToVpnManagerApp(VpnManager.CATEGORY_EVENT_NETWORK_ERROR, + VpnManager.ERROR_CLASS_RECOVERABLE, + VpnManager.ERROR_CODE_NETWORK_LOST, + getPackage(), mSessionKey, makeVpnProfileStateLocked(), + mActiveNetwork, + getRedactedNetworkCapabilitiesOfUnderlyingNetwork( + mUnderlyingNetworkCapabilities), + getRedactedLinkPropertiesOfUnderlyingNetwork( + mUnderlyingLinkProperties)); + } } else if (exception instanceof IkeNonProtocolException) { - category = VpnManager.CATEGORY_EVENT_NETWORK_ERROR; - errorClass = VpnManager.ERROR_CLASS_RECOVERABLE; if (exception.getCause() instanceof UnknownHostException) { - errorCode = VpnManager.ERROR_CODE_NETWORK_UNKNOWN_HOST; + // TODO(b/230548427): Remove SDK check once VPN related stuff are + // decoupled from ConnectivityServiceTest. + if (SdkLevel.isAtLeastT()) { + sendEventToVpnManagerApp(VpnManager.CATEGORY_EVENT_NETWORK_ERROR, + VpnManager.ERROR_CLASS_RECOVERABLE, + VpnManager.ERROR_CODE_NETWORK_UNKNOWN_HOST, + getPackage(), mSessionKey, makeVpnProfileStateLocked(), + mActiveNetwork, + getRedactedNetworkCapabilitiesOfUnderlyingNetwork( + mUnderlyingNetworkCapabilities), + getRedactedLinkPropertiesOfUnderlyingNetwork( + mUnderlyingLinkProperties)); + } } else if (exception.getCause() instanceof IkeTimeoutException) { - errorCode = VpnManager.ERROR_CODE_NETWORK_PROTOCOL_TIMEOUT; + // TODO(b/230548427): Remove SDK check once VPN related stuff are + // decoupled from ConnectivityServiceTest. + if (SdkLevel.isAtLeastT()) { + sendEventToVpnManagerApp(VpnManager.CATEGORY_EVENT_NETWORK_ERROR, + VpnManager.ERROR_CLASS_RECOVERABLE, + VpnManager.ERROR_CODE_NETWORK_PROTOCOL_TIMEOUT, + getPackage(), mSessionKey, makeVpnProfileStateLocked(), + mActiveNetwork, + getRedactedNetworkCapabilitiesOfUnderlyingNetwork( + mUnderlyingNetworkCapabilities), + getRedactedLinkPropertiesOfUnderlyingNetwork( + mUnderlyingLinkProperties)); + } } else if (exception.getCause() instanceof IOException) { - errorCode = VpnManager.ERROR_CODE_NETWORK_IO; + // TODO(b/230548427): Remove SDK check once VPN related stuff are + // decoupled from ConnectivityServiceTest. + if (SdkLevel.isAtLeastT()) { + sendEventToVpnManagerApp(VpnManager.CATEGORY_EVENT_NETWORK_ERROR, + VpnManager.ERROR_CLASS_RECOVERABLE, + VpnManager.ERROR_CODE_NETWORK_IO, + getPackage(), mSessionKey, makeVpnProfileStateLocked(), + mActiveNetwork, + getRedactedNetworkCapabilitiesOfUnderlyingNetwork( + mUnderlyingNetworkCapabilities), + getRedactedLinkPropertiesOfUnderlyingNetwork( + mUnderlyingLinkProperties)); + } } } else if (exception != null) { Log.wtf(TAG, "onSessionLost: exception = " + exception); } - // TODO(b/230548427): Remove SDK check once VPN related stuff are - // decoupled from ConnectivityServiceTest. - if (SdkLevel.isAtLeastT()) { - sendEventToVpnManagerApp(category, errorClass, errorCode, - getPackage(), mSessionKey, makeVpnProfileStateLocked(), - mActiveNetwork, - getRedactedNetworkCapabilitiesOfUnderlyingNetwork( - mUnderlyingNetworkCapabilities), - getRedactedLinkPropertiesOfUnderlyingNetwork( - mUnderlyingLinkProperties)); - } - if (errorClass == VpnManager.ERROR_CLASS_NOT_RECOVERABLE) { - markFailedAndDisconnect(exception); - return; - } else if (errorClass == VpnManager.ERROR_CLASS_RECOVERABLE) { - // Retry a new IKE session. - } } mActiveNetwork = null; |