Check connected state on capability changes

This commit is contained in:
M66B 2020-07-08 17:13:06 +02:00
parent 6315a9c7fd
commit ba45b661b5
1 changed files with 9 additions and 0 deletions

View File

@ -2464,6 +2464,7 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
builder.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
ConnectivityManager.NetworkCallback nc = new ConnectivityManager.NetworkCallback() {
private Boolean last_connected = null;
private Boolean last_unmetered = null;
private String last_generation = null;
private List<InetAddress> last_dns = null;
@ -2471,6 +2472,7 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
@Override
public void onAvailable(Network network) {
Log.i(TAG, "Available network=" + network);
last_connected = Util.isConnected(ServiceSinkhole.this);
reload("network available", ServiceSinkhole.this, false);
}
@ -2494,6 +2496,12 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {
Log.i(TAG, "Changed capabilities=" + network);
boolean connected = Util.isConnected(ServiceSinkhole.this);
if (connected && (last_connected == null || !last_connected)) {
last_connected = connected;
reload("Connected state changed", ServiceSinkhole.this, false);
}
boolean unmetered = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
String generation = Util.getNetworkGeneration(ServiceSinkhole.this);
Log.i(TAG, "Generation=" + generation + " unmetered=" + unmetered);
@ -2523,6 +2531,7 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
@Override
public void onLost(Network network) {
Log.i(TAG, "Lost network=" + network);
last_connected = Util.isConnected(ServiceSinkhole.this);
reload("network lost", ServiceSinkhole.this, false);
}