[orbot/master] improve stop/start logic for tor and snowflake

commit 806b7233b2bc54f10e464ba9d0cfbf4621783344 Author: n8fr8 <nathan@guardianproject.info> Date: Fri Jul 2 14:09:51 2021 -0400 improve stop/start logic for tor and snowflake --- .../torproject/android/service/OrbotService.java | 28 +++++++--------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java b/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java index c7d455f7..ca4b538c 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java +++ b/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java @@ -288,7 +288,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb //not registered yet } - stopTorAsync(); + super.onDestroy(); } @@ -404,7 +404,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb /** * if someone stops during startup, we may have to wait for the conn port to be setup, so we can properly shutdown tor */ - private synchronized void stopTor() throws Exception { + private void stopTor() throws Exception { if (conn != null) { logNotice("Using control port to shutdown Tor"); @@ -695,12 +695,8 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb private void startTor() { try { - // STATUS_STARTING is set in onCreate() - if (mCurrentStatus.equals(STATUS_STOPPING)) { - // these states should probably be handled better - sendCallbackLogMessage("Ignoring start request, currently " + mCurrentStatus); - return; - } else if (mCurrentStatus.equals(STATUS_ON)) { + if (torServiceConnection != null && conn != null) + { showConnectedToTorNetworkNotification(); sendCallbackLogMessage("Ignoring start request, already started."); return; @@ -708,9 +704,6 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb sendCallbackStatus(STATUS_STARTING); - // make sure there are no stray daemons running - stopTor(); - showToolbarNotification(getString(R.string.status_starting_up), NOTIFY_ID, R.drawable.ic_stat_tor); //sendCallbackLogMessage(getString(R.string.status_starting_up)); //logNotice(getString(R.string.status_starting_up)); @@ -1554,16 +1547,12 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb IPtProxy.startObfs4Proxy("DEBUG", false, false); else if (useIPtSnowflakeProxy()) startSnowflakeClient(); - } - else if (Prefs.beSnowflakeProxy()) - { + } else if (Prefs.beSnowflakeProxy()) { if (Prefs.limitSnowflakeProxying() - && isChargingAndWifi(OrbotService.this)) - { + && isChargingAndWifi(OrbotService.this)) { enableSnowflakeProxy(); - } - else + } else enableSnowflakeProxy(); } @@ -1585,7 +1574,8 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb if (mPortSOCKS != -1 && mPortHTTP != -1) sendCallbackPorts(mPortSOCKS, mPortHTTP, mPortDns, mPortTrans); } - + } else if (action.equals(ACTION_STOP)) { + stopTorAsync(); } else if (action.equals(ACTION_START_VPN)) { if (mVpnManager != null && (!mVpnManager.isStarted())) { //start VPN here
participants (1)
-
n8fr8@torproject.org