rework killing all daemons to continue trying after a failure
Before, it would quit the process on the first exception while killing. This makes it keep on trying each daemon.
This commit is contained in:
parent
73658ce3cf
commit
2bc85a4a3a
|
@ -399,7 +399,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
|
||||||
{
|
{
|
||||||
Log.d(TAG,"Tor is stopping NOW");
|
Log.d(TAG,"Tor is stopping NOW");
|
||||||
|
|
||||||
shutdownTorProcess ();
|
killAllDaemons ();
|
||||||
|
|
||||||
//stop the foreground priority and make sure to remove the persistant notification
|
//stop the foreground priority and make sure to remove the persistant notification
|
||||||
stopForeground(true);
|
stopForeground(true);
|
||||||
|
@ -505,31 +505,49 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void shutdownTorProcess () throws Exception
|
private void killAllDaemons() throws CannotKillException {
|
||||||
{
|
if (conn != null) {
|
||||||
|
|
||||||
if (conn != null)
|
|
||||||
{
|
|
||||||
|
|
||||||
logNotice("Using control port to shutdown Tor");
|
logNotice("Using control port to shutdown Tor");
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
logNotice("sending HALT signal to Tor process");
|
logNotice("sending HALT signal to Tor process");
|
||||||
conn.shutdownTor("HALT");
|
conn.shutdownTor("HALT");
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (IOException e) {
|
||||||
Log.d(TAG, "error shutting down Tor via connection", e);
|
Log.d(TAG, "error shutting down Tor via connection", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
conn = null;
|
conn = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
killProcess(fileTor);
|
// try these separately in case one fails, then it can try the next
|
||||||
|
File cannotKillFile = null;
|
||||||
killProcess(filePolipo);
|
try {
|
||||||
killProcess(fileObfsclient);
|
killProcess(fileObfsclient);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
cannotKillFile = fileObfsclient;
|
||||||
|
}
|
||||||
|
try {
|
||||||
killProcess(fileMeekclient);
|
killProcess(fileMeekclient);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
cannotKillFile = fileMeekclient;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
killProcess(filePolipo);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
cannotKillFile = filePolipo;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
killProcess(fileTor);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
cannotKillFile = fileTor;
|
||||||
|
}
|
||||||
|
if (cannotKillFile != null)
|
||||||
|
throw new CannotKillException(cannotKillFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CannotKillException extends IllegalStateException {
|
public class CannotKillException extends IllegalStateException {
|
||||||
|
@ -540,7 +558,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void killProcess(File fileProcBin) throws IOException {
|
private void killProcess(File fileProcBin) throws IOException, CannotKillException {
|
||||||
int procId = -1;
|
int procId = -1;
|
||||||
int killAttempts = 0;
|
int killAttempts = 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue