Hi. I'm not good enough in Android development to say for sure. I found a similar bud fixed different ways: OpenVPN: https://github.com/schwabe/ics-openvpn/blob/450e99c135ebabbf911d6880e39811d88454cdd1/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java#L877 Outline: https://github.com/Jigsaw-Code/outline-client/commit/3a9dad6a3cbe962cb10e443cfea21c929e98ef32 Since OpenVPN uses the same I suppose it should help. But looks like it should still be wrapped with an Android version check. чт, 16 янв. 2020 г. в 01:29, Jason A. Donenfeld : > Hi Andrey, > > Thanks for the bug report. > > On 1/13/20 12:00 AM, Andrey Kupreychik wrote: > > My Android phone running wireguard VPN threats it as a metered > > connection and does not do anything it should do on Wi-Fi only > > > > What I found is this discussion > > https://issuetracker.google.com/issues/114309459 > > I've looked thru the GitHub mirror code and found no evidance of > > setUnderlyingNetworks called in WireGuard client code. > > > > As seen in the issue tracker link above, it's needed in order to take > > advantage of this > > ( > https://developer.android.com/about/versions/pie/android-9.0-changes-all#network-capabilities-vpn) > > > behavior change. As described in the issue tracker link, this prevents > > Pie devices from properly using unmetered WiFi networks. > > Are you suggesting something like the below? According to the docs, the > null value is the "default", and the others don't fit the wireguard > model. Are you saying we should still be calling this anyway because the > android system is expecting it? > > From 4ae0e9688e4edfdad06e6db49f414a95c5663d07 Mon Sep 17 00:00:00 2001 > From: "Jason A. Donenfeld" > Date: Wed, 15 Jan 2020 13:25:56 -0500 > Subject: [PATCH] GoBackend: set empty underlying networks > > https://lists.zx2c4.com/pipermail/wireguard/2020-January/004859.html > https://issuetracker.google.com/issues/114309459 > > https://developer.android.com/about/versions/pie/android-9.0-changes-all#network-capabilities-vpn > > Apparently we need to call this at least once. > > Reported-by: Andrey Kupreychik > --- > app/src/main/java/com/wireguard/android/backend/GoBackend.java | 1 + > 1 file changed, 1 insertion(+) > > diff --git > a/app/src/main/java/com/wireguard/android/backend/GoBackend.java > b/app/src/main/java/com/wireguard/android/backend/GoBackend.java > index 3e8e1ec..3c4c893 100644 > --- a/app/src/main/java/com/wireguard/android/backend/GoBackend.java > +++ b/app/src/main/java/com/wireguard/android/backend/GoBackend.java > @@ -224,6 +224,7 @@ public final class GoBackend implements Backend { > > currentTunnel = tunnel; > > + service.setUnderlyingNetworks(null); > service.protect(wgGetSocketV4(currentTunnelHandle)); > service.protect(wgGetSocketV6(currentTunnelHandle)); > } else { > -- > 2.24.1 > > > Regards, > Jason > -- Andrey Kupreychik http://foxel.quickfox.ru