mirror of https://github.com/M66B/NetGuard.git
Added option to enable VPN handover
This commit is contained in:
parent
6c5e89450a
commit
9a4cff7927
|
@ -568,14 +568,41 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
|
|||
|
||||
} else {
|
||||
last_builder = builder;
|
||||
Log.i(TAG, "VPN restart");
|
||||
|
||||
if (vpn != null) {
|
||||
stopNative(vpn, clear);
|
||||
stopVPN(vpn);
|
||||
boolean handover = prefs.getBoolean("handover", false);
|
||||
Log.i(TAG, "VPN restart handover=" + handover);
|
||||
|
||||
if (handover) {
|
||||
// Attempt seamless handover
|
||||
ParcelFileDescriptor prev = vpn;
|
||||
vpn = startVPN(builder);
|
||||
|
||||
if (prev != null && vpn == null) {
|
||||
Log.w(TAG, "Handover failed");
|
||||
stopNative(prev, clear);
|
||||
stopVPN(prev);
|
||||
prev = null;
|
||||
try {
|
||||
Thread.sleep(3000);
|
||||
} catch (InterruptedException ignored) {
|
||||
}
|
||||
vpn = startVPN(last_builder);
|
||||
if (vpn == null)
|
||||
throw new IllegalStateException("Handover failed");
|
||||
}
|
||||
|
||||
if (prev != null) {
|
||||
stopNative(prev, clear);
|
||||
stopVPN(prev);
|
||||
}
|
||||
} else {
|
||||
if (vpn != null) {
|
||||
stopNative(vpn, clear);
|
||||
stopVPN(vpn);
|
||||
}
|
||||
|
||||
vpn = startVPN(builder);
|
||||
}
|
||||
|
||||
vpn = startVPN(builder);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -99,6 +99,7 @@
|
|||
<string name="setting_access">Notify on internet access</string>
|
||||
<string name="setting_filter">Filter traffic</string>
|
||||
<string name="setting_filter_udp">Filter UDP traffic</string>
|
||||
<string name="setting_handover">Seamless VPN handover on reload</string>
|
||||
<string name="setting_clear_onreload">Close connections on reload</string>
|
||||
<string name="setting_lockdown">Lockdown traffic</string>
|
||||
<string name="setting_track_usage">Track network usage</string>
|
||||
|
|
|
@ -182,6 +182,11 @@
|
|||
android:dependency="filter"
|
||||
android:key="filter_udp"
|
||||
android:title="@string/setting_filter_udp" />
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:dependency="filter"
|
||||
android:key="handover"
|
||||
android:title="@string/setting_handover" />
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:dependency="filter"
|
||||
|
|
|
@ -182,6 +182,11 @@
|
|||
android:dependency="filter"
|
||||
android:key="filter_udp"
|
||||
android:title="@string/setting_filter_udp" />
|
||||
<eu.faircode.netguard.SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:dependency="filter"
|
||||
android:key="handover"
|
||||
android:title="@string/setting_handover" />
|
||||
<eu.faircode.netguard.SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:dependency="filter"
|
||||
|
|
Loading…
Reference in New Issue