Ensure Subrouting is closed if register fails

This commit is contained in:
Mygod
2018-12-29 00:48:39 +08:00
parent 1ced7566f5
commit eda1e48ede

View File

@@ -62,8 +62,12 @@ class Subrouting(private val parent: Routing, priority: Int, val upstream: Strin
init {
Timber.d("Subrouting initialized from %s to %s", parent.downstream, upstream)
Timber.d(Thread.currentThread().stackTrace.joinToString("\n"))
try {
IpNeighbourMonitor.registerCallback(this)
} catch (e: Exception) {
close()
throw e
}
}
/**
@@ -72,7 +76,6 @@ class Subrouting(private val parent: Routing, priority: Int, val upstream: Strin
override fun close() {
IpNeighbourMonitor.unregisterCallback(this)
Timber.d("Subrouting closed from %s to %s", parent.downstream, upstream)
Timber.d(Thread.currentThread().stackTrace.joinToString("\n"))
}
override fun onIpNeighbourAvailable(neighbours: List<IpNeighbour>) = synchronized(parent) {