diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-24 21:07:12 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-27 10:59:46 +0000 |
| commit | 825872880e5961294146649ee108bca283c50c8c (patch) | |
| tree | 230fe4167f894dc327d75d3d269640d61cdaf741 /android | |
| parent | f5c54a4c8292f840665fe0f892c94da2e4759801 (diff) | |
| download | mullvadvpn-825872880e5961294146649ee108bca283c50c8c.tar.xz mullvadvpn-825872880e5961294146649ee108bca283c50c8c.zip | |
Ensure only one action is active in a given moment
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt index 7680947faf..4466d22eaf 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt @@ -28,6 +28,7 @@ class ConnectFragment : Fragment() { private var generateWireguardKeyJob = generateWireguardKey() + private var activeAction: Job? = null private var attachListenerJob: Job? = null private var updateViewJob: Job? = null private var waitForDaemonJob: Job? = null @@ -96,13 +97,21 @@ class ConnectFragment : Fragment() { } } - private fun connect() = GlobalScope.launch(Dispatchers.Default) { - generateWireguardKeyJob.join() - daemon.await().connect() + private fun connect() { + activeAction?.cancel() + + activeAction = GlobalScope.launch(Dispatchers.Default) { + generateWireguardKeyJob.join() + daemon.await().connect() + } } - private fun disconnect() = GlobalScope.launch(Dispatchers.Default) { - daemon.await().disconnect() + private fun disconnect() { + activeAction?.cancel() + + activeAction = GlobalScope.launch(Dispatchers.Default) { + daemon.await().disconnect() + } } private fun updateView(state: TunnelStateTransition) = GlobalScope.launch(Dispatchers.Main) { |
