From 01e40b1a843326036425727355550dba8bd66335 Mon Sep 17 00:00:00 2001 From: cyBerta Date: Sun, 24 Oct 2021 16:47:12 +0200 Subject: cancel tor and provider setup on pressing back button --- .../providersetup/ProviderApiManagerBase.java | 16 ++++++++++------ .../activities/ProviderSetupBaseActivity.java | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/providersetup') diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerBase.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerBase.java index 6e07e84b..bc173b36 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerBase.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderApiManagerBase.java @@ -192,11 +192,12 @@ public abstract class ProviderApiManagerBase { } // uncomment for testing --v - /* try { + try { startTorProxy(); } catch (InterruptedException | TimeoutException e) { e.printStackTrace(); - } */ + return; + } Bundle result = new Bundle(); switch (action) { @@ -302,6 +303,9 @@ public abstract class ProviderApiManagerBase { ) { serviceCallback.startTorService(); waitForTorCircuits(); + if (TorStatusObservable.isCancelled()) { + throw new InterruptedException("cancelled Tor setup"); + } int port = serviceCallback.getTorHttpTunnelPort(); TorStatusObservable.setProxyPort(port); return port != -1; @@ -314,17 +318,17 @@ public abstract class ProviderApiManagerBase { return; } CountDownLatch countDownLatch = new CountDownLatch(1); - AtomicBoolean successfulSetup = new AtomicBoolean(false); + AtomicBoolean stopWaiting = new AtomicBoolean(false); Observer observer = (o, arg) -> { - if (TorStatusObservable.getStatus() == ON) { - successfulSetup.set(true); + if (TorStatusObservable.getStatus() == ON || TorStatusObservable.isCancelled()) { + stopWaiting.set(true); countDownLatch.countDown(); } }; TorStatusObservable.getInstance().addObserver(observer); countDownLatch.await(180, TimeUnit.SECONDS); TorStatusObservable.getInstance().deleteObserver(observer); - if (!successfulSetup.get()) { + if (!stopWaiting.get()) { throw new TimeoutException("Timeout reached"); } } diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/activities/ProviderSetupBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/activities/ProviderSetupBaseActivity.java index e4569c51..6395c7ae 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/activities/ProviderSetupBaseActivity.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/activities/ProviderSetupBaseActivity.java @@ -170,8 +170,8 @@ public abstract class ProviderSetupBaseActivity extends ConfigWizardBaseActivity public void cancelSettingUpProvider(boolean stopTor) { if (stopTor && TorStatusObservable.getStatus() != OFF) { - Intent torServiceIntent = new Intent(getApplicationContext(), TorService.class); - stopService(torServiceIntent); + Log.d(TAG, "SHUTDOWN - cancelSettingUpProvider stopTor:" + stopTor); + TorStatusObservable.shutdownTor(this); } providerConfigState = PROVIDER_NOT_SET; provider = null; -- cgit v1.2.3