[tor-commits] [orbot/master] fixes for status, service, binding and start/stop

n8fr8 at torproject.org n8fr8 at torproject.org
Mon Jun 30 19:49:10 UTC 2014


commit 70615d669bc3dd56f83a5715a6cb215a5da882ee
Author: Nathan Freitas <nathan at freitas.net>
Date:   Mon Jun 30 15:45:14 2014 -0400

    fixes for status, service, binding and start/stop
---
 src/org/torproject/android/Orbot.java              |   52 +++++++-----
 src/org/torproject/android/service/TorService.java |   86 +++++++++++---------
 2 files changed, 77 insertions(+), 61 deletions(-)

diff --git a/src/org/torproject/android/Orbot.java b/src/org/torproject/android/Orbot.java
index 83d8e42..106c20b 100644
--- a/src/org/torproject/android/Orbot.java
+++ b/src/org/torproject/android/Orbot.java
@@ -34,7 +34,6 @@ import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.res.Configuration;
 import android.net.Uri;
 import android.os.AsyncTask;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -82,7 +81,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
 	/* Tor Service interaction */
 		/* The primary interface we will be calling on the service. */
     ITorService mService = null;
-
+    
 	private SharedPreferences mPrefs = null;
 
 	private boolean autoStartFromIntent = false;
@@ -104,11 +103,10 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
         
 	}
 
-	Intent torService;
 	
 	private void startService ()
 	{
-		torService = new Intent(this, TorService.class);    	    	
+		Intent torService = new Intent(this, TorService.class);    	    	
 		startService(torService);
 		
 		bindService(torService,
@@ -435,6 +433,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
                         mConnection = null;
                         mService = null;
                         
+                        
                 } catch (RemoteException e) {
                         Log.w(TAG, e);
                 }
@@ -645,7 +644,6 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
 			
 		}
 		
-		torStatus = -1;
 		updateStatus ("");
 		
 	}
@@ -844,7 +842,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
         protected Integer doInBackground(String... params) {
           
         	mTorServiceMsg = params[0];
-        	int newTorStatus = -1;
+        	int newTorStatus = TorServiceConstants.STATUS_OFF;
             try
             {
             	if (mService != null)
@@ -966,20 +964,28 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
             
 
 			mTxtOrbotLog.setText("");
+			
+			if (mService != null)
+			{
 		
-            // 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
-                
-            //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
-            imgStatus.setImageResource(R.drawable.torstarting);
-            lblStatus.setText(getString(R.string.status_starting_up));
-            
-            //we send a message here to the progressDialog i believe, but we can clarify that shortly
-            Message msg = mHandler.obtainMessage(TorServiceConstants.ENABLE_TOR_MSG);
-            msg.getData().putString(HANDLER_TOR_MSG, getString(R.string.status_starting_up));
-            mHandler.sendMessage(msg);
+	            // 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
+	                
+	            //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
+	            imgStatus.setImageResource(R.drawable.torstarting);
+	            lblStatus.setText(getString(R.string.status_starting_up));
+	            
+	            //we send a message here to the progressDialog i believe, but we can clarify that shortly
+	            Message msg = mHandler.obtainMessage(TorServiceConstants.ENABLE_TOR_MSG);
+	            msg.getData().putString(HANDLER_TOR_MSG, getString(R.string.status_starting_up));
+	            mHandler.sendMessage(msg);
+			}
+			else
+			{
+				showAlert(getString(R.string.error),"Tor Service has not started yet. Please wait and try again.",false);
+			}
             
     	
     }
@@ -1169,7 +1175,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
             // representation of that from the raw service object.
             mService = ITorService.Stub.asInterface(service);
        
-            torStatus = -1;
+            torStatus = TorServiceConstants.STATUS_OFF;
             
             // We want to monitor the service for as long as we are
             // connected to it.
@@ -1259,8 +1265,12 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
 	protected void onDestroy() {
 		super.onDestroy();
 		
-		if (mConnection != null)
+		if (mConnection != null && mService != null)
+		{
 			unbindService(mConnection);
+			mConnection = null;
+			mService = null;
+		}
 	}
 
 	public class DataCount {
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
index 3ddc112..358e717 100644
--- a/src/org/torproject/android/service/TorService.java
+++ b/src/org/torproject/android/service/TorService.java
@@ -154,7 +154,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 				
 	 			if (mLastProcessId != -1)
 	 			{
-
 		            sendCallbackLogMessage (getString(R.string.found_existing_tor_process));
 		
 		 			String state = conn.getInfo("dormant");
@@ -293,29 +292,25 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 	    	{
         		Intent intent = params[0];
         		
-        		initBinaries();
-    			
-    			
-     		   IntentFilter mNetworkStateFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
-     		   registerReceiver(mNetworkStateReceiver , mNetworkStateFilter);
-     	
-     			mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
-     	
-     			if (intent != null && intent.getAction()!=null && intent.getAction().equals("onboot"))
-     			{
-     				
-     				boolean startOnBoot = TorServiceUtils.getSharedPrefs(getApplicationContext()).getBoolean("pref_start_boot",false);
-     				
-     				if (startOnBoot)
-     				{
-     					setTorProfile(PROFILE_ON);
-     				}
-     			}
-     			else
-     			{
-     				findExistingProc();
-     				
-     			}
+        		if (mNotificationManager == null)
+        		{
+	        	   
+	     		   IntentFilter mNetworkStateFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
+	     		   registerReceiver(mNetworkStateReceiver , mNetworkStateFilter);
+	     	
+	     			mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+	     	
+	     			if (intent != null && intent.getAction()!=null && intent.getAction().equals("onboot"))
+	     			{
+	     				
+	     				boolean startOnBoot = TorServiceUtils.getSharedPrefs(getApplicationContext()).getBoolean("pref_start_boot",false);
+	     				
+	     				if (startOnBoot)
+	     				{
+	     					setTorProfile(PROFILE_ON);
+	     				}
+	     			}
+        		}
 	    	}
 	    	catch (Exception e)
 	    	{
@@ -507,7 +502,23 @@ public class TorService extends Service implements TorServiceConstants, TorConst
     	}
     }
     
-    private void initBinaries () throws Exception
+    @Override
+	public void onCreate() {
+		super.onCreate();
+		
+		try
+		{
+			initBinariesAndDirectories();
+		}
+		catch (Exception e)
+		{
+			//what error here
+			Log.e(TAG, "Error installing Orbot binaries",e);
+			logNotice("There was an error installing Orbot binaries");
+		}
+	}
+
+	private void initBinariesAndDirectories () throws Exception
     {
 
     	if (appBinHome == null)
@@ -617,16 +628,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
     	
 		currentStatus = STATUS_CONNECTING;
     	
-    	try
-    	{
-    		initBinaries();
-    	}
-    	catch (IOException e)
-    	{
-    		logNotice("There was a problem installing the Tor binaries: " + e.getLocalizedMessage());
-    		Log.d(TAG,"error installing binaries",e);
-    		return;
-    	}
     	
     	enableBinExec(fileTor);
 		enableBinExec(filePolipo);	
@@ -1126,7 +1127,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		
 		public void setTorProfile(int profile)  {
 		
-			if (currentStatus == STATUS_OFF)
+			if (profile == PROFILE_ON)
         	{
         		
 	            sendCallbackStatusMessage (getString(R.string.status_starting_up));
@@ -1368,7 +1369,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
           
         	try
 	    	{
-	    		initBinaries();
 	    		findExistingProc ();
 	    	}
 	    	catch (Exception e)
@@ -1444,7 +1444,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
         		public void run ()
         		{
 		        	try {
-		        	 	
+		        	 	 
+        
+       
 		        		processSettingsImpl ();
 		
 				    	
@@ -1488,7 +1490,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 	        		List<ConfigEntry> listCe = conn.getConf(name);
 	        		
 	        		Iterator<ConfigEntry> itCe = listCe.iterator();
-	        		ConfigEntry ce = null;
+	        		ConfigEntry ce = null; 
+	                
+	        	       
 	        		
 	        		while (itCe.hasNext())
 	        		{
@@ -1517,7 +1521,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
          * Set configuration
          **/
         public boolean updateConfiguration (String name, String value, boolean saveToDisk)
-        {
+        { 
+            
+            
         	if (configBuffer == null)
         		configBuffer = new ArrayList<String>();
 	        





More information about the tor-commits mailing list