Suppress interface gone exceptions

This commit is contained in:
Mygod
2021-05-19 12:44:21 -04:00
parent 1179bc9563
commit 2c89444c63
2 changed files with 4 additions and 3 deletions

View File

@@ -97,7 +97,7 @@ abstract class RoutingManager(private val caller: Any, val downstream: String, p
true true
} catch (e: Exception) { } catch (e: Exception) {
when (e) { when (e) {
is Routing.InterfaceNotFoundException -> Timber.i(e) is Routing.InterfaceNotFoundException -> Timber.d(e)
!is CancellationException -> Timber.w(e) !is CancellationException -> Timber.w(e)
} }
SmartSnackbar.make(e).show() SmartSnackbar.make(e).show()

View File

@@ -149,13 +149,14 @@ class Routing(private val caller: Any, private val downstream: String) : IpNeigh
private var masqueradeMode = MasqueradeMode.None private var masqueradeMode = MasqueradeMode.None
private val upstreams = HashSet<String>() private val upstreams = HashSet<String>()
private class InterfaceGoneException(upstream: String) : IOException("Interface $upstream not found")
private open inner class Upstream(val priority: Int) : UpstreamMonitor.Callback { private open inner class Upstream(val priority: Int) : UpstreamMonitor.Callback {
/** /**
* The only case when upstream is null is on API 23- and we are using system default rules. * The only case when upstream is null is on API 23- and we are using system default rules.
*/ */
inner class Subrouting(priority: Int, val upstream: String) { inner class Subrouting(priority: Int, val upstream: String) {
val ifindex = if (upstream.isEmpty()) 0 else if_nametoindex(upstream).also { val ifindex = if (upstream.isEmpty()) 0 else if_nametoindex(upstream).also {
if (it <= 0) throw IOException("Interface $upstream not found") if (it <= 0) throw InterfaceGoneException(upstream)
} }
val transaction = RootSession.beginTransaction().safeguard { val transaction = RootSession.beginTransaction().safeguard {
if (upstream.isEmpty()) { if (upstream.isEmpty()) {
@@ -195,7 +196,7 @@ class Routing(private val caller: Any, private val downstream: String) : IpNeigh
subrouting[ifname] = Subrouting(priority, ifname) subrouting[ifname] = Subrouting(priority, ifname)
} catch (e: Exception) { } catch (e: Exception) {
SmartSnackbar.make(e).show() SmartSnackbar.make(e).show()
if (e !is CancellationException) Timber.w(e) if (e !is CancellationException && e !is InterfaceGoneException) Timber.w(e)
} }
} }
for (ifname in toRemove) { for (ifname in toRemove) {