diff options
| author | David Göransson <david.goransson@mullvad.net> | 2024-11-07 15:09:21 +0100 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2024-11-12 14:39:34 +0100 |
| commit | fa6cacdf9e25bce1efab9b5987bafeb3d7a3ba76 (patch) | |
| tree | f58c01091e1a252f1465a7ce47341b177a21ce87 /android/lib | |
| parent | e1567cf4721b6d677196bb4523d1fa337c1efb24 (diff) | |
| download | mullvadvpn-fa6cacdf9e25bce1efab9b5987bafeb3d7a3ba76.tar.xz mullvadvpn-fa6cacdf9e25bce1efab9b5987bafeb3d7a3ba76.zip | |
Fix incorrect parsing of auth failed error
Diffstat (limited to 'android/lib')
2 files changed, 27 insertions, 7 deletions
diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt index fc4c64942f..9c54bc5bc5 100644 --- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt +++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt @@ -19,6 +19,7 @@ import net.mullvad.mullvadvpn.lib.model.ApiAccessMethodName import net.mullvad.mullvadvpn.lib.model.ApiAccessMethodSetting import net.mullvad.mullvadvpn.lib.model.AppId import net.mullvad.mullvadvpn.lib.model.AppVersionInfo +import net.mullvad.mullvadvpn.lib.model.AuthFailedError import net.mullvad.mullvadvpn.lib.model.Cipher import net.mullvad.mullvadvpn.lib.model.Constraint import net.mullvad.mullvadvpn.lib.model.CustomDnsOptions @@ -202,7 +203,7 @@ internal fun ManagementInterface.ErrorState.toDomain(): ErrorState = cause = when (cause!!) { ManagementInterface.ErrorState.Cause.AUTH_FAILED -> - ErrorStateCause.AuthFailed(authFailedError.name) + ErrorStateCause.AuthFailed(authFailedError.toDomain()) ManagementInterface.ErrorState.Cause.IPV6_UNAVAILABLE -> ErrorStateCause.Ipv6Unavailable ManagementInterface.ErrorState.Cause.SET_FIREWALL_POLICY_ERROR -> @@ -225,6 +226,19 @@ internal fun ManagementInterface.ErrorState.toDomain(): ErrorState = isBlocking = !hasBlockingError(), ) +private fun ManagementInterface.ErrorState.AuthFailedError.toDomain(): AuthFailedError = + when (this) { + ManagementInterface.ErrorState.AuthFailedError.UNKNOWN -> AuthFailedError.Unknown + ManagementInterface.ErrorState.AuthFailedError.INVALID_ACCOUNT -> + AuthFailedError.InvalidAccount + ManagementInterface.ErrorState.AuthFailedError.EXPIRED_ACCOUNT -> + AuthFailedError.ExpiredAccount + ManagementInterface.ErrorState.AuthFailedError.TOO_MANY_CONNECTIONS -> + AuthFailedError.TooManyConnections + ManagementInterface.ErrorState.AuthFailedError.UNRECOGNIZED -> + throw IllegalArgumentException("Unrecognized auth failed error") + } + internal fun ManagementInterface.ErrorState.FirewallPolicyError.toDomain(): ErrorStateCause.FirewallPolicyError = when (type!!) { diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt index 0ba63a4b08..3af72d663b 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt @@ -3,13 +3,9 @@ package net.mullvad.mullvadvpn.lib.model import java.net.InetAddress sealed class ErrorStateCause { - class AuthFailed(private val reason: String?) : ErrorStateCause() { + class AuthFailed(private val error: AuthFailedError) : ErrorStateCause() { fun isCausedByExpiredAccount(): Boolean { - return reason == AUTH_FAILED_REASON_EXPIRED_ACCOUNT - } - - companion object { - private const val AUTH_FAILED_REASON_EXPIRED_ACCOUNT = "[EXPIRED_ACCOUNT]" + return error is AuthFailedError.ExpiredAccount } } @@ -32,3 +28,13 @@ sealed class ErrorStateCause { data object VpnPermissionDenied : ErrorStateCause() } + +sealed interface AuthFailedError { + data object ExpiredAccount : AuthFailedError + + data object InvalidAccount : AuthFailedError + + data object TooManyConnections : AuthFailedError + + data object Unknown : AuthFailedError +} |
