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()
process.outputStream.close()
} catch (e: IOException) {
// Stream closed caused in NullOutputStream
if (e.message != "Stream closed") Logger.me.w("send Shutdown failed", e)
if (!e.isEBADF) Logger.me.w("send Shutdown failed", e)
}
Logger.me.d("Client closed")
}

View File

@@ -6,9 +6,12 @@ import android.annotation.SuppressLint
import android.content.Context
import android.os.Parcel
import android.os.Parcelable
import android.system.ErrnoException
import android.system.OsConstants
import android.util.*
import androidx.annotation.RequiresApi
import kotlinx.parcelize.Parcelize
import java.io.IOException
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.readParcelable<T>(classLoader)
}
// Stream closed caused in NullOutputStream
val IOException.isEBADF get() = message == "Stream closed" || (cause as? ErrnoException)?.errno == OsConstants.EBADF