diff --git a/app/src/main/java/com/nuvio/tv/core/torrent/TorrServerBinary.kt b/app/src/main/java/com/nuvio/tv/core/torrent/TorrServerBinary.kt index 680da93b..38225fc9 100644 --- a/app/src/main/java/com/nuvio/tv/core/torrent/TorrServerBinary.kt +++ b/app/src/main/java/com/nuvio/tv/core/torrent/TorrServerBinary.kt @@ -105,7 +105,7 @@ class TorrServerBinary @Inject constructor( Log.d(TAG, "TorrServer started successfully") return@withContext } - if (process?.isAlive == false) { + if (!isProcessAlive(process)) { val exitCode = process?.exitValue() ?: -1 process = null throw TorrentException("TorrServer process died on startup (exit code $exitCode)") @@ -140,7 +140,7 @@ class TorrServerBinary @Inject constructor( process?.let { proc -> try { Thread.sleep(3000) - if (proc.isAlive) { + if (isProcessAlive(proc)) { proc.destroyForcibly() } } catch (_: Exception) { @@ -150,4 +150,16 @@ class TorrServerBinary @Inject constructor( process = null Log.d(TAG, "TorrServer stopped") } + + private fun isProcessAlive(proc: Process?): Boolean { + if (proc == null) return false + return try { + proc.exitValue() + false + } catch (_: IllegalThreadStateException) { + true + } catch (_: Exception) { + false + } + } }