From 998be94fee5392fef2c3aa5f1c4f9f790265a534 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 26 Jul 2020 20:19:59 +0200 Subject: [PATCH] Check transport of underlying network --- .../java/eu/faircode/email/ConnectionHelper.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/ConnectionHelper.java b/app/src/main/java/eu/faircode/email/ConnectionHelper.java index 8d6201780c..3e20c40228 100644 --- a/app/src/main/java/eu/faircode/email/ConnectionHelper.java +++ b/app/src/main/java/eu/faircode/email/ConnectionHelper.java @@ -236,6 +236,11 @@ public class ConnectionHelper { } // VPN: evaluate underlying networks + Integer transport = null; + if (caps.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) + transport = NetworkCapabilities.TRANSPORT_CELLULAR; + else if (caps.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) + transport = NetworkCapabilities.TRANSPORT_WIFI; boolean underlying = false; Network[] networks = cm.getAllNetworks(); @@ -264,6 +269,14 @@ public class ConnectionHelper { continue; } + if (!caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN) && + (caps.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || + caps.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) && + (transport != null && !caps.hasTransport(transport))) { + Log.i("isMetered: underlying other transport"); + continue; + } + if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)) { underlying = true; Log.i("isMetered: underlying is connected");