[tor-commits] [orbot/master] more tuning of Tor service startup and status checking
n8fr8 at torproject.org
n8fr8 at torproject.org
Sun Sep 7 13:42:55 UTC 2014
commit 8ee5e9e0fbe0f5c1561b9fee6a2178d15b14faff
Author: Nathan Freitas <nathan at freitas.net>
Date: Sat Sep 6 00:46:57 2014 -0400
more tuning of Tor service startup and status checking
---
src/org/torproject/android/Orbot.java | 22 ++++----
src/org/torproject/android/service/TorService.java | 59 +++++++++-----------
.../android/service/TorServiceConstants.java | 3 -
3 files changed, 38 insertions(+), 46 deletions(-)
diff --git a/src/org/torproject/android/Orbot.java b/src/org/torproject/android/Orbot.java
index 5300dea..c448ed9 100644
--- a/src/org/torproject/android/Orbot.java
+++ b/src/org/torproject/android/Orbot.java
@@ -17,7 +17,7 @@ import org.torproject.android.wizard.ChooseLocaleWizardActivity;
import org.torproject.android.wizard.TipsAndTricks;
import android.app.AlertDialog;
-import android.app.NotificationManager;
+import android.app.ProgressDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
@@ -101,10 +101,10 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
}
+ ProgressDialog mProgressDialog;
private void startService ()
{
- appendLogTextAndScroll("starting Tor background service... ");
Intent torService = new Intent(this, TorService.class);
startService(torService);
@@ -112,7 +112,9 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
bindService(torService,
mConnection, Context.BIND_AUTO_CREATE);
-
+ appendLogTextAndScroll("starting Tor background service... ");
+ mProgressDialog = ProgressDialog.show(this, "", getString(R.string.status_starting_up), true);
+
}
private void doLayout ()
@@ -124,11 +126,8 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
lblStatus.setOnLongClickListener(this);
imgStatus = (ImageProgressView)findViewById(R.id.imgStatus);
imgStatus.setOnLongClickListener(this);
-
imgStatus.setOnTouchListener(this);
- imgStatus.setEnabled(false);
-
lblStatus.setText("Initializing the application...");
downloadText = (TextView)findViewById(R.id.trafficDown);
@@ -983,7 +982,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
// this is a bit of a strange/old/borrowed code/design i used to change the service state
// not sure it really makes sense when what we want to say is just "startTor"
- mService.setProfile(TorServiceConstants.PROFILE_ON); //this means turn on
+ mService.setProfile(TorServiceConstants.STATUS_ON); //this means turn on
//here we update the UI which is a bit sloppy and mixed up code wise
//might be best to just call updateStatus() instead of directly manipulating UI in this method - yep makes sense
@@ -1010,7 +1009,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
{
if (mService != null)
{
- mService.setProfile(TorServiceConstants.PROFILE_OFF);
+ mService.setProfile(TorServiceConstants.STATUS_OFF);
Message msg = mHandler.obtainMessage(TorServiceConstants.DISABLE_TOR_MSG);
mHandler.sendMessage(msg);
@@ -1200,6 +1199,9 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
public void onServiceConnected(ComponentName className,
IBinder service) {
+ if (mProgressDialog != null && mProgressDialog.isShowing())
+ mProgressDialog.dismiss();
+
appendLogTextAndScroll("Tor background service connected.");
// This is called when the connection with the service has been
@@ -1208,10 +1210,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
// service through an IDL interface, so get a client-side
// representation of that from the raw service object.
mService = ITorService.Stub.asInterface(service);
-
- imgStatus.setEnabled(true);
-
// We want to monitor the service for as long as we are
// connected to it.
try {
@@ -1233,6 +1232,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
}
+
public void onServiceDisconnected(ComponentName className) {
appendLogTextAndScroll("Tor background service disconnected.");
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
index 1dd39f8..b9f3791 100644
--- a/src/org/torproject/android/service/TorService.java
+++ b/src/org/torproject/android/service/TorService.java
@@ -83,7 +83,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
public static boolean ENABLE_DEBUG_LOG = false;
- private static int currentStatus = STATUS_OFF;
+ private int mCurrentStatus = STATUS_OFF;
private final static int CONTROL_SOCKET_TIMEOUT = 0;
@@ -183,7 +183,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{
sendCallbackLogMessage (getString(R.string.found_existing_tor_process));
- currentStatus = STATUS_ON;
+ mCurrentStatus = STATUS_ON;
return true;
}
@@ -217,7 +217,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
public int getTorStatus ()
{
- return currentStatus;
+ return mCurrentStatus;
}
@@ -340,12 +340,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
try
{
-
- if (fileTor == null)
- initBinariesAndDirectories();
-
- updateSettings ();
-
+ initialize();
new Thread (new TorStarter(intent)).start();
return Service.START_STICKY;
@@ -386,7 +381,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
//if this is a start on boot launch turn tor on
if (mIntent != null && mIntent.getAction()!=null && mIntent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
{
- setTorProfile(PROFILE_ON);
+ setTorProfile(STATUS_ON);
}
}
catch (Exception e)
@@ -422,7 +417,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
//stop the foreground priority and make sure to remove the persistant notification
stopForeground(true);
- currentStatus = STATUS_OFF;
+ mCurrentStatus = STATUS_OFF;
if (mHasRoot && mEnableTransparentProxy)
disableTransparentProxy();
@@ -744,7 +739,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
public void startTor () throws Exception
{
- currentStatus = STATUS_CONNECTING;
+ mCurrentStatus = STATUS_CONNECTING;
if (fileTor == null)
initBinariesAndDirectories();
@@ -1127,7 +1122,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
conn.setConf("Log", "debug file " + fileLog2.getCanonicalPath());
}*/
- currentStatus = STATUS_CONNECTING;
+ mCurrentStatus = STATUS_CONNECTING;
String confSocks = conn.getInfo("net/listeners/socks");
StringTokenizer st = new StringTokenizer(confSocks," ");
@@ -1297,7 +1292,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
// get several values
- if (currentStatus == STATUS_CONNECTING)
+ if (mCurrentStatus == STATUS_CONNECTING)
{
//Map vals = conn.getInfo(Arrays.asList(new String[]{
// "status/bootstrap-phase", "status","version"}));
@@ -1317,7 +1312,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
catch (Exception e)
{
Log.d(TAG, "Unable to get Tor status from control port");
- currentStatus = STATUS_UNAVAILABLE;
+ mCurrentStatus = STATUS_UNAVAILABLE;
}
}*/
@@ -1359,16 +1354,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
}
-
-
- public int getProfile() throws RemoteException {
- //return mProfile;
- return PROFILE_ON;
- }
-
public void setTorProfile(int profile) {
- if (profile == PROFILE_ON)
+ if (profile == STATUS_ON)
{
sendCallbackStatusMessage (getString(R.string.status_starting_up));
@@ -1382,7 +1370,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{
logException("Unable to start Tor: " + e.toString(),e);
- currentStatus = STATUS_OFF;
+ mCurrentStatus = STATUS_OFF;
showToolbarNotification(getString(R.string.unable_to_start_tor) + ": " + e.getMessage(), ERROR_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
stopTor();
}
@@ -1393,7 +1381,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
stopTor();
- currentStatus = STATUS_OFF;
+ mCurrentStatus = STATUS_OFF;
}
}
@@ -1405,7 +1393,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
if (msg.indexOf(TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE)!=-1)
{
- currentStatus = STATUS_ON;
+ mCurrentStatus = STATUS_ON;
showToolbarNotification(getString(R.string.status_activated), NOTIFY_ID, R.drawable.ic_stat_tor);
}
@@ -1550,8 +1538,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
else if(status.equals("BUILT"))
{
- if (currentStatus == STATUS_CONNECTING)
- currentStatus = STATUS_ON;
+ if (mCurrentStatus == STATUS_CONNECTING)
+ mCurrentStatus = STATUS_ON;
logNotice(sb.toString());
@@ -1679,10 +1667,18 @@ public class TorService extends Service implements TorServiceConstants, TorConst
public IBinder onBind(Intent intent) {
+ logNotice("Background service is bound. Status=" + mCurrentStatus);
+
return mBinder;
}
- public boolean checkAndInitImpl ()
+ @Override
+ public void onRebind(Intent intent) {
+
+ super.onRebind(intent);
+ }
+
+ public boolean checkAndInitImpl ()
{
if (fileTor != null)
{
@@ -1693,8 +1689,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
return true;
}
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ logException("error init Tor", e);
}
}
@@ -2026,7 +2021,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
mBinder.saveConfiguration();
}
- if (currentStatus != STATUS_OFF)
+ if (mCurrentStatus != STATUS_OFF)
{
if (!mConnectivity)
{
diff --git a/src/org/torproject/android/service/TorServiceConstants.java b/src/org/torproject/android/service/TorServiceConstants.java
index 19a99c8..a77cdac 100644
--- a/src/org/torproject/android/service/TorServiceConstants.java
+++ b/src/org/torproject/android/service/TorServiceConstants.java
@@ -71,9 +71,6 @@ public interface TorServiceConstants {
public final static int STATUS_ON = 1;
public final static int STATUS_CONNECTING = 2;
- public final static int PROFILE_OFF = -1;
- public final static int PROFILE_ON = 1;
-
public static final int STATUS_MSG = 1;
public static final int ENABLE_TOR_MSG = 2;
public static final int DISABLE_TOR_MSG = 3;
More information about the tor-commits
mailing list