Avoid failing when multiple interface address was found

This commit is contained in:
Mygod
2019-06-10 22:53:24 +08:00
parent 84d1f68da1
commit c780fed7ff

View File

@@ -11,6 +11,7 @@ import be.mygod.vpnhotspot.room.AppDatabase
import be.mygod.vpnhotspot.util.RootSession
import be.mygod.vpnhotspot.util.computeIfAbsentCompat
import be.mygod.vpnhotspot.widget.SmartSnackbar
import com.crashlytics.android.Crashlytics
import kotlinx.coroutines.runBlocking
import timber.log.Timber
import java.io.IOException
@@ -91,7 +92,12 @@ class Routing(private val caller: Any, private val downstream: String) : IpNeigh
}
private val hostAddress = try {
NetworkInterface.getByName(downstream)!!.interfaceAddresses!!.asSequence().single { it.address is Inet4Address }
val addresses = NetworkInterface.getByName(downstream)!!.interfaceAddresses!!
.filter { it.address is Inet4Address }
if (addresses.size > 1) {
Crashlytics.logException(IllegalArgumentException("More than one addresses was found: $addresses"))
}
addresses.first()
} catch (e: Exception) {
throw InterfaceNotFoundException(e)
}