diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-26 11:13:17 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-29 09:29:53 +0000 |
| commit | dec65fe1757e94e39de9c9476da46a1431fd5a1e (patch) | |
| tree | 62c2445506ceeb87268ef1a42fc4eeff8a96fe65 | |
| parent | 928bd2cf769103929bb3f92e66d8142a58d7c192 (diff) | |
| download | mullvadvpn-dec65fe1757e94e39de9c9476da46a1431fd5a1e.tar.xz mullvadvpn-dec65fe1757e94e39de9c9476da46a1431fd5a1e.zip | |
Retry to generate WireGuard keys when app resumes
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt | 5 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt index f5fbab1526..d16e36a1b6 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt @@ -87,6 +87,11 @@ class MainActivity : FragmentActivity() { } } + override fun onResume() { + super.onResume() + keyStatusListener.onResume() + } + override fun onStop() { unbindService(serviceConnection) diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt index 1279f59567..66b7a96e44 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt @@ -4,12 +4,14 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.Deferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.Job import net.mullvad.mullvadvpn.MullvadDaemon import net.mullvad.mullvadvpn.model.KeygenEvent class KeyStatusListener(val asyncDaemon: Deferred<MullvadDaemon>) { private var daemon: MullvadDaemon? = null + private var retryJob: Job? = null private val setUpJob = setUp() @@ -38,8 +40,21 @@ class KeyStatusListener(val asyncDaemon: Deferred<MullvadDaemon>) { daemon?.onKeygenEvent = { event -> keyStatus = event } } + fun onResume() { + if (keyStatus is KeygenEvent.TooManyKeys || keyStatus is KeygenEvent.GenerationFailure) { + retryJob?.cancel() + retryJob = retryKeyGeneration() + } + } + fun onDestroy() { setUpJob.cancel() + retryJob?.cancel() daemon?.onKeygenEvent = null } + + private fun retryKeyGeneration() = GlobalScope.launch(Dispatchers.Default) { + setUpJob.join() + keyStatus = daemon?.generateWireguardKey() + } } |
