summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt23
1 files changed, 17 insertions, 6 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt
index bc89cc6c1e..eae5fa0219 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt
@@ -109,15 +109,26 @@ class ConnectionProxy(val context: Context, val daemon: MullvadDaemon) {
synchronized(this) {
val currentState = uiState
- if (currentState is TunnelState.Disconnecting &&
- currentState.actionAfterDisconnect == ActionAfterDisconnect.Reconnect
- ) {
- return false
- } else {
+ val willReconnect = when (currentState) {
+ is TunnelState.Disconnected -> false
+ is TunnelState.Disconnecting -> {
+ when (currentState.actionAfterDisconnect) {
+ ActionAfterDisconnect.Nothing -> false
+ ActionAfterDisconnect.Reconnect -> false
+ ActionAfterDisconnect.Block -> true
+ }
+ }
+ is TunnelState.Connecting -> true
+ is TunnelState.Connected -> true
+ is TunnelState.Error -> true
+ }
+
+ if (willReconnect) {
scheduleToResetAnticipatedState()
uiState = TunnelState.Disconnecting(ActionAfterDisconnect.Reconnect)
- return true
}
+
+ return willReconnect
}
}