diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-12 13:28:22 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-03-23 12:36:35 +0000 |
| commit | 52dea8bb89718f10867b78751610c551ac779917 (patch) | |
| tree | dab3bcd4a28077958234e00c7236525845f6047e /android/src | |
| parent | 3412ed642e267b2a40d0556feea5229e8d15faa1 (diff) | |
| download | mullvadvpn-52dea8bb89718f10867b78751610c551ac779917.tar.xz mullvadvpn-52dea8bb89718f10867b78751610c551ac779917.zip | |
Use intermittent daemon in `SettingsListener`
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 2 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt | 28 |
2 files changed, 25 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 0e43e7aa64..2c8293be1c 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -232,7 +232,7 @@ class MullvadVpnService : TalpidVpnService() { } private suspend fun setUpInstance(daemon: MullvadDaemon, settings: Settings) { - val settingsListener = SettingsListener(daemon, settings) + val settingsListener = SettingsListener(settings, daemonInstance.intermittentDaemon) val connectionProxy = ConnectionProxy(this, daemon) val customDns = CustomDns(daemon, settingsListener) val splitTunneling = splitTunneling.await() 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 8f5154ea54..186065c20b 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt @@ -1,9 +1,10 @@ package net.mullvad.mullvadvpn.service import net.mullvad.mullvadvpn.model.Settings +import net.mullvad.mullvadvpn.util.Intermittent import net.mullvad.talpid.util.EventNotifier -class SettingsListener(val daemon: MullvadDaemon, val initialSettings: Settings) { +class SettingsListener(val initialSettings: Settings, val daemon: Intermittent<MullvadDaemon>) { val accountNumberNotifier = EventNotifier(initialSettings.accountToken) val dnsOptionsNotifier = EventNotifier(initialSettings.tunnelOptions.dnsOptions) val relaySettingsNotifier = EventNotifier(initialSettings.relaySettings) @@ -13,13 +14,16 @@ class SettingsListener(val daemon: MullvadDaemon, val initialSettings: Settings) private set init { - daemon.onSettingsChange.subscribe(this) { maybeSettings -> - maybeSettings?.let { settings -> handleNewSettings(settings) } + daemon.registerListener(this) { newDaemon -> + if (newDaemon != null) { + registerListener(newDaemon) + fetchInitialSettings(newDaemon) + } } } fun onDestroy() { - daemon.onSettingsChange.unsubscribe(this) + daemon.unregisterListener(this) accountNumberNotifier.unsubscribeAll() dnsOptionsNotifier.unsubscribeAll() @@ -35,6 +39,22 @@ class SettingsListener(val daemon: MullvadDaemon, val initialSettings: Settings) settingsNotifier.unsubscribe(id) } + private fun registerListener(daemon: MullvadDaemon) { + daemon.onSettingsChange.subscribe(this) { maybeSettings -> + synchronized(this) { + maybeSettings?.let { newSettings -> handleNewSettings(newSettings) } + } + } + } + + private fun fetchInitialSettings(daemon: MullvadDaemon) { + synchronized(this) { + daemon.getSettings()?.let { newSettings -> + handleNewSettings(newSettings) + } + } + } + private fun handleNewSettings(newSettings: Settings) { synchronized(this) { if (settings.accountToken != newSettings.accountToken) { |
