Fix exit code 143 not handled
This commit is contained in:
@@ -21,12 +21,12 @@ abstract class IpMonitor : Runnable {
|
|||||||
private var monitor: Process? = null
|
private var monitor: Process? = null
|
||||||
private var pool: ScheduledExecutorService? = null
|
private var pool: ScheduledExecutorService? = null
|
||||||
|
|
||||||
private fun handleProcess(builder: ProcessBuilder): Int {
|
private fun handleProcess(builder: ProcessBuilder): Boolean {
|
||||||
val process = try {
|
val process = try {
|
||||||
builder.start()
|
builder.start()
|
||||||
} catch (e: IOException) {
|
} catch (e: IOException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
return -1
|
return false
|
||||||
}
|
}
|
||||||
monitor = process
|
monitor = process
|
||||||
val err = thread("${javaClass.simpleName}-error") {
|
val err = thread("${javaClass.simpleName}-error") {
|
||||||
@@ -47,14 +47,15 @@ abstract class IpMonitor : Runnable {
|
|||||||
}
|
}
|
||||||
err.join()
|
err.join()
|
||||||
process.waitFor()
|
process.waitFor()
|
||||||
return process.exitValue()
|
val result = process.exitValue()
|
||||||
|
return result == 0 || result == 143 // SIGTERM
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
thread("${javaClass.simpleName}-input") {
|
thread("${javaClass.simpleName}-input") {
|
||||||
// monitor may get rejected by SELinux
|
// monitor may get rejected by SELinux
|
||||||
if (handleProcess(ProcessBuilder("ip", "monitor", monitoredObject)) == 0) return@thread
|
if (handleProcess(ProcessBuilder("ip", "monitor", monitoredObject))) return@thread
|
||||||
if (handleProcess(ProcessBuilder("su", "-c", "exec ip monitor $monitoredObject")) == 0) return@thread
|
if (handleProcess(ProcessBuilder("su", "-c", "exec ip monitor $monitoredObject"))) return@thread
|
||||||
Crashlytics.log(Log.WARN, javaClass.simpleName, "Failed to set up monitor, switching to polling")
|
Crashlytics.log(Log.WARN, javaClass.simpleName, "Failed to set up monitor, switching to polling")
|
||||||
Crashlytics.logException(MonitorFailure())
|
Crashlytics.logException(MonitorFailure())
|
||||||
val pool = Executors.newScheduledThreadPool(1)
|
val pool = Executors.newScheduledThreadPool(1)
|
||||||
|
|||||||
Reference in New Issue
Block a user