diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-29 19:27:33 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-01 17:29:17 +0000 |
| commit | ee80a576323a90c9313a504ca410429522e7e248 (patch) | |
| tree | 3171fa61b1da842b1199b78ed5cac2fe9d080c2a /android | |
| parent | e43fd0dc1958ce8e17531cb8fe3867a357b7d2e1 (diff) | |
| download | mullvadvpn-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.
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 13 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt | 4 |
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 |
