diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-21 01:59:14 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-24 11:56:00 +0000 |
| commit | 057a602f4f7230d889a6031d74df347d21ad8f8a (patch) | |
| tree | 386ff17b83e36171d37397a1db104a29df953ee8 /android/src/main | |
| parent | c80e8e78bb37d7c1cae97ce4aae1164c889288e6 (diff) | |
| download | mullvadvpn-057a602f4f7230d889a6031d74df347d21ad8f8a.tar.xz mullvadvpn-057a602f4f7230d889a6031d74df347d21ad8f8a.zip | |
Use `DaemonInstance` helper in `MullvadVpnService`
Diffstat (limited to 'android/src/main')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 39 |
1 files changed, 27 insertions, 12 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 f7eba5c1da..ecfbe29948 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -51,6 +51,7 @@ class MullvadVpnService : TalpidVpnService() { private var shouldStop = false private var startDaemonJob: Job? = null + private var setUpDaemonJob: Job? = null private var instance by observable<ServiceInstance?>(null) { _, oldInstance, newInstance -> if (newInstance != oldInstance) { @@ -69,6 +70,7 @@ class MullvadVpnService : TalpidVpnService() { oldNotification?.onDestroy() } + private lateinit var daemonInstance: DaemonInstance private lateinit var keyguardManager: KeyguardManager private lateinit var notificationManager: ForegroundNotificationManager private lateinit var tunnelStateUpdater: TunnelStateUpdater @@ -102,6 +104,10 @@ class MullvadVpnService : TalpidVpnService() { notificationManager.acknowledgeStartForegroundService() + daemonInstance = DaemonInstance(this) { daemon -> + handleDaemonInstance(daemon) + } + setUp() } @@ -173,6 +179,7 @@ class MullvadVpnService : TalpidVpnService() { Log.d(TAG, "Service has stopped") tearDown() notificationManager.onDestroy() + daemonInstance.onDestroy() super.onDestroy() } @@ -196,6 +203,21 @@ class MullvadVpnService : TalpidVpnService() { ) } + private fun handleDaemonInstance(daemon: MullvadDaemon?) { + setUpDaemonJob?.cancel() + + if (daemon != null) { + setUpDaemonJob = setUpDaemon(daemon) + } else { + Log.d(TAG, "Daemon has stopped") + instance = null + + if (!isStopping) { + restart() + } + } + } + private fun setUp() { startDaemonJob?.cancel() startDaemonJob = startDaemon() @@ -205,18 +227,10 @@ class MullvadVpnService : TalpidVpnService() { Log.d(TAG, "Starting daemon") prepareFiles() splitTunneling.await() + daemonInstance.start() + } - val daemon = MullvadDaemon(this@MullvadVpnService).apply { - onDaemonStopped = { - Log.d(TAG, "Daemon has stopped") - instance = null - - if (!isStopping) { - restart() - } - } - } - + private fun setUpDaemon(daemon: MullvadDaemon) = GlobalScope.launch(Dispatchers.Default) { val settings = daemon.getSettings() if (settings != null) { @@ -278,7 +292,8 @@ class MullvadVpnService : TalpidVpnService() { private fun stopDaemon() { Log.d(TAG, "Stopping daemon") startDaemonJob?.cancel() - instance?.daemon?.shutdown() + setUpDaemonJob?.cancel() + daemonInstance.stop() } private fun tearDown() { |
