summaryrefslogtreecommitdiffhomepage
path: root/android/lib
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2024-11-07 15:09:21 +0100
committerDavid Göransson <david.goransson@mullvad.net>2024-11-12 14:39:34 +0100
commitfa6cacdf9e25bce1efab9b5987bafeb3d7a3ba76 (patch)
treef58c01091e1a252f1465a7ce47341b177a21ce87 /android/lib
parente1567cf4721b6d677196bb4523d1fa337c1efb24 (diff)
downloadmullvadvpn-fa6cacdf9e25bce1efab9b5987bafeb3d7a3ba76.tar.xz
mullvadvpn-fa6cacdf9e25bce1efab9b5987bafeb3d7a3ba76.zip
Fix incorrect parsing of auth failed error
Diffstat (limited to 'android/lib')
-rw-r--r--android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt16
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/ErrorStateCause.kt18
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
+}