Suppress EBADF for RootServer as well

This commit is contained in:
Mygod
2021-04-24 12:56:04 -04:00
parent 66e1acf0f6
commit 310b55553b
3 changed files with 10 additions and 8 deletions

View File

@@ -303,8 +303,7 @@ class RootServer {
output.close() output.close()
process.outputStream.close() process.outputStream.close()
} catch (e: IOException) { } catch (e: IOException) {
// Stream closed caused in NullOutputStream if (!e.isEBADF) Logger.me.w("send Shutdown failed", e)
if (e.message != "Stream closed") Logger.me.w("send Shutdown failed", e)
} }
Logger.me.d("Client closed") Logger.me.d("Client closed")
} }

View File

@@ -6,9 +6,12 @@ import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.os.Parcel import android.os.Parcel
import android.os.Parcelable import android.os.Parcelable
import android.system.ErrnoException
import android.system.OsConstants
import android.util.* import android.util.*
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize
import java.io.IOException
class NoShellException(cause: Throwable) : Exception("Root missing", cause) class NoShellException(cause: Throwable) : Exception("Root missing", cause)
@@ -247,3 +250,6 @@ inline fun <reified T : Parcelable> ByteArray.toParcelable(classLoader: ClassLoa
p.setDataPosition(0) p.setDataPosition(0)
p.readParcelable<T>(classLoader) p.readParcelable<T>(classLoader)
} }
// Stream closed caused in NullOutputStream
val IOException.isEBADF get() = message == "Stream closed" || (cause as? ErrnoException)?.errno == OsConstants.EBADF

View File

@@ -1,10 +1,9 @@
package be.mygod.vpnhotspot.net.monitor package be.mygod.vpnhotspot.net.monitor
import android.os.Build import android.os.Build
import android.system.ErrnoException
import android.system.OsConstants
import androidx.core.content.edit import androidx.core.content.edit
import be.mygod.librootkotlinx.RootServer import be.mygod.librootkotlinx.RootServer
import be.mygod.librootkotlinx.isEBADF
import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.App.Companion.app
import be.mygod.vpnhotspot.BuildConfig import be.mygod.vpnhotspot.BuildConfig
import be.mygod.vpnhotspot.R import be.mygod.vpnhotspot.R
@@ -70,9 +69,7 @@ abstract class IpMonitor {
try { try {
process.errorStream.bufferedReader().forEachLine { Timber.e(it) } process.errorStream.bufferedReader().forEachLine { Timber.e(it) }
} catch (_: InterruptedIOException) { } catch (e: IOException) { } catch (_: InterruptedIOException) { } catch (e: IOException) {
if ((e.cause as? ErrnoException)?.errno != OsConstants.EBADF && e.message != "Stream closed") { if (!e.isEBADF) Timber.w(e)
Timber.w(e)
}
} }
} }
try { try {
@@ -83,7 +80,7 @@ abstract class IpMonitor {
} else processLine(it) } else processLine(it)
} }
} catch (_: InterruptedIOException) { } catch (e: IOException) { } catch (_: InterruptedIOException) { } catch (e: IOException) {
if ((e.cause as? ErrnoException)?.errno != OsConstants.EBADF && e.message != "Stream closed") Timber.w(e) if (!e.isEBADF) Timber.w(e)
} }
err.join() err.join()
Timber.d("Monitor process exited with ${process.waitFor()}") Timber.d("Monitor process exited with ${process.waitFor()}")