summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/tor/TorServiceCommand.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/tor/TorServiceCommand.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/tor/TorServiceCommand.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/tor/TorServiceCommand.java b/app/src/main/java/se/leap/bitmaskclient/tor/TorServiceCommand.java
index 68988b67..b99abb3d 100644
--- a/app/src/main/java/se/leap/bitmaskclient/tor/TorServiceCommand.java
+++ b/app/src/main/java/se/leap/bitmaskclient/tor/TorServiceCommand.java
@@ -42,7 +42,9 @@ public class TorServiceCommand {
public static boolean startTorService(Context context, String action) throws InterruptedException {
Log.d(TAG, "startTorService");
try {
- waitUntil(TorServiceCommand::isNotCancelled, 30);
+ if (TorStatusObservable.isCancelled()) {
+ waitUntil(TorServiceCommand::isNotCancelled, 30);
+ }
} catch (TimeoutException e) {
e.printStackTrace();
}
@@ -79,7 +81,8 @@ public class TorServiceCommand {
@WorkerThread
public static void stopTorService(Context context) {
- if (TorStatusObservable.getStatus() == TorStatusObservable.TorStatus.OFF) {
+ if (TorStatusObservable.getStatus() == TorStatusObservable.TorStatus.STOPPING ||
+ TorStatusObservable.getStatus() == TorStatusObservable.TorStatus.OFF) {
return;
}
TorStatusObservable.markCancelled();
@@ -100,6 +103,9 @@ public class TorServiceCommand {
}
public static void stopTorServiceAsync(Context context) {
+ if (!TorStatusObservable.isRunning()) {
+ return;
+ }
TorStatusObservable.markCancelled();
new Thread(() -> stopTorService(context)).start();
}