summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-29 19:27:33 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-01 17:29:17 +0000
commitee80a576323a90c9313a504ca410429522e7e248 (patch)
tree3171fa61b1da842b1199b78ed5cac2fe9d080c2a
parente43fd0dc1958ce8e17531cb8fe3867a357b7d2e1 (diff)
downloadmullvadvpn-ee80a576323a90c9313a504ca410429522e7e248.tar.xz
mullvadvpn-ee80a576323a90c9313a504ca410429522e7e248.zip
Restart initialization if daemon acts weird
If it returns a `null` `Settings` object, it means that the daemon is not responding correctly. In that case, abort the initialization and try again.
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt13
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt4
2 files changed, 12 insertions, 5 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index b4ca8f7772..99c391dedb 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -9,6 +9,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
+import net.mullvad.mullvadvpn.model.Settings
import net.mullvad.mullvadvpn.service.tunnelstate.TunnelStateUpdater
import net.mullvad.mullvadvpn.ui.MainActivity
import net.mullvad.talpid.TalpidVpnService
@@ -164,7 +165,13 @@ class MullvadVpnService : TalpidVpnService() {
}
}
- setUpInstance(daemon)
+ val settings = daemon.getSettings()
+
+ if (settings != null) {
+ setUpInstance(daemon, settings)
+ } else {
+ restart()
+ }
}
private fun prepareFiles() {
@@ -184,7 +191,7 @@ class MullvadVpnService : TalpidVpnService() {
}
}
- private fun setUpInstance(daemon: MullvadDaemon) {
+ private fun setUpInstance(daemon: MullvadDaemon, settings: Settings) {
val connectionProxy = ConnectionProxy(this@MullvadVpnService, daemon).apply {
when (pendingAction) {
PendingAction.Connect -> connect()
@@ -196,7 +203,7 @@ class MullvadVpnService : TalpidVpnService() {
}
val locationInfoCache = LocationInfoCache(daemon, connectionProxy, connectivityListener)
- val settingsListener = SettingsListener(daemon)
+ val settingsListener = SettingsListener(daemon, settings)
instance = ServiceInstance(
daemon,
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt
index 0100c25a3d..2441e9f2cc 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt
@@ -4,8 +4,8 @@ import net.mullvad.mullvadvpn.model.RelaySettings
import net.mullvad.mullvadvpn.model.Settings
import net.mullvad.talpid.util.EventNotifier
-class SettingsListener(val daemon: MullvadDaemon) {
- var settings: Settings = daemon.getSettings()
+class SettingsListener(val daemon: MullvadDaemon, val initialSettings: Settings) {
+ var settings: Settings = initialSettings
private set(value) {
settingsNotifier.notify(value)
field = value