Fix bug where sync isn't possible as soon there's any connection without INTERNET (bitfireAT/davx5#370)

Fix bug where sync wasn't possible as soon there's any connection without INTERNET (bitfireAT/davx5#369)
This commit is contained in:
Ricki Hirner 2023-09-06 23:59:58 +02:00
parent 56deab70ee
commit f1a1d0efd8

View file

@ -47,27 +47,32 @@ object ConnectionUtils {
internal fun internetAvailable(context: Context, ignoreVpns: Boolean): Boolean {
val connectivityManager = context.getSystemService<ConnectivityManager>()!!
return connectivityManager.allNetworks.any { network ->
Logger.log.log(Level.FINE, "Looking for validated Internet", connectivityManager.getNetworkInfo(network))
val capabilities = connectivityManager.getNetworkCapabilities(network)
Logger.log.log(Level.FINE, "Looking for validated Internet over this connection.",
arrayOf(connectivityManager.getNetworkInfo(network), capabilities))
connectivityManager.getNetworkCapabilities(network)?.let { capabilities ->
if (capabilities != null) {
if (!capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
Logger.log.fine("Missing network capability: INTERNET")
return false
return@any false
}
if (!capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) {
Logger.log.fine("Missing network capability: VALIDATED")
return false
return@any false
}
if (ignoreVpns)
if (!capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) {
Logger.log.fine("Missing network capability: NOT_VPN")
return false
return@any false
}
/* return */ true
} ?: false
Logger.log.fine("This connection can be used.")
/* return@any */ true
} else
// no network capabilities available, we can't use this connection
/* return@any */ false
}
}