[tor-commits] [orbot/master] clean-up how kill process works; only try additional attempts if needed

n8fr8 at torproject.org n8fr8 at torproject.org
Tue Apr 28 21:05:02 UTC 2020


commit 71e4badbe2bb746efcf47a27031817f93b441531
Author: n8fr8 <nathan at guardianproject.info>
Date:   Wed Feb 5 10:50:31 2020 -0500

    clean-up how kill process works; only try additional attempts if needed
---
 .../torproject/android/service/vpn/VpnUtils.java   | 58 +++++++++++++++-------
 1 file changed, 39 insertions(+), 19 deletions(-)

diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/VpnUtils.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/VpnUtils.java
index 4ac71410..3be8fe4a 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/vpn/VpnUtils.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/VpnUtils.java
@@ -68,28 +68,43 @@ public class VpnUtils {
         while ((procId = findProcessId(fileProcBin.getName())) != -1) {
             killAttempts++;
             String pidString = String.valueOf(procId);
+            boolean itBeDead = killProcess(pidString, signal);
 
-            String[] cmds = {"","busybox ","toolbox "};
+            if (!itBeDead) {
 
-            for (int i = 0; i < cmds.length;i++) {
-                try {
-                    getRuntime().exec(cmds[i] + "killall " + signal + " " + fileProcBin.getName
-                            ());
-                } catch (IOException ioe) {
+                String[] cmds = {"", "busybox ", "toolbox "};
+
+                for (int i = 0; i < cmds.length; i++) {
+
+                    Process proc = null;
+
+                    try {
+                        proc = getRuntime().exec(cmds[i] + "killall " + signal + " " + fileProcBin.getName
+                                ());
+                        int exitValue = proc.waitFor();
+                        if (exitValue == 0)
+                            break;
+
+                    } catch (IOException ioe) {
+                    }
+                    try {
+                        proc = getRuntime().exec(cmds[i] + "killall " + signal + " " + fileProcBin.getCanonicalPath());
+                        int exitValue = proc.waitFor();
+                        if (exitValue == 0)
+                            break;
+
+                    } catch (IOException ioe) {
+                    }
                 }
+
+
                 try {
-                    getRuntime().exec(cmds[i] + "killall " + signal + " " + fileProcBin.getCanonicalPath());
-                } catch (IOException ioe) {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                    // ignored
                 }
-            }
 
-            killProcess(pidString, signal);
-
-            try {
-                Thread.sleep(1000);
-            } catch (InterruptedException e) {
-                // ignored
-            }
+                           }
 
             if (killAttempts > 4)
                 throw new Exception("Cannot kill: " + fileProcBin.getAbsolutePath());
@@ -98,14 +113,14 @@ public class VpnUtils {
         return procId;
     }
 
-    public static void killProcess(String pidString, String signal) throws Exception {
+    public static boolean killProcess(String pidString, String signal) throws Exception {
 
         String[] cmds = {"","toolbox ","busybox "};
 
         for (int i = 0; i < cmds.length;i++) {
             try {
                 Process proc = getRuntime().exec(cmds[i] + "kill " + signal + " " + pidString);
-                int exitVal = proc.exitValue();
+                int exitVal = proc.waitFor();
                 List<String> lineErrors = IOUtils.readLines(proc.getErrorStream());
                 List<String> lineInputs = IOUtils.readLines(proc.getInputStream());
 
@@ -119,6 +134,11 @@ public class VpnUtils {
                         Log.d("Orbot.killProcess",line);
 
                 }
+                else
+                {
+                    //it worked, let's exit
+                    return true;
+                }
 
 
             } catch (IOException ioe) {
@@ -126,6 +146,6 @@ public class VpnUtils {
             }
         }
 
-
+        return false;
     }
 }





More information about the tor-commits mailing list