summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-24 21:07:12 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-27 10:59:46 +0000
commit825872880e5961294146649ee108bca283c50c8c (patch)
tree230fe4167f894dc327d75d3d269640d61cdaf741
parentf5c54a4c8292f840665fe0f892c94da2e4759801 (diff)
downloadmullvadvpn-825872880e5961294146649ee108bca283c50c8c.tar.xz
mullvadvpn-825872880e5961294146649ee108bca283c50c8c.zip
Ensure only one action is active in a given moment
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt19
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) {