1
0
Fork 0
mirror of https://github.com/M66B/NetGuard.git synced 2024-12-25 01:07:52 +00:00

Workaround handover problems

This commit is contained in:
M66B 2015-11-23 08:34:47 +01:00
parent 22f3d0766a
commit e613966d35
2 changed files with 16 additions and 4 deletions

View file

@ -66,6 +66,7 @@
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/renderscript" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/renderscript" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes-proguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/debug" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/debug" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
@ -75,6 +76,8 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/release" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />

View file

@ -86,6 +86,9 @@ public class SinkholeService extends VpnService {
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
try { try {
handleIntent((Intent) msg.obj); handleIntent((Intent) msg.obj);
} catch (Throwable ex) {
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
Util.sendCrashReport(ex, SinkholeService.this);
} finally { } finally {
try { try {
PowerManager.WakeLock wl = getLock(SinkholeService.this); PowerManager.WakeLock wl = getLock(SinkholeService.this);
@ -116,6 +119,15 @@ public class SinkholeService extends VpnService {
// Seamless handover // Seamless handover
ParcelFileDescriptor prev = vpn; ParcelFileDescriptor prev = vpn;
vpn = startVPN(); vpn = startVPN();
if (prev != null && vpn == null) {
Log.w(TAG, "Handover failed");
stopDebug();
stopVPN(prev);
prev = null;
vpn = startVPN();
if (vpn == null)
throw new IllegalStateException("Handover failed");
}
stopDebug(); stopDebug();
startDebug(vpn); startDebug(vpn);
if (prev != null) if (prev != null)
@ -197,10 +209,7 @@ public class SinkholeService extends VpnService {
// Start VPN service // Start VPN service
try { try {
ParcelFileDescriptor result = builder.establish(); return builder.establish();
if (result == null)
throw new IllegalStateException("VpnService.Builder.establish returned unexpectedly NULL");
return result;
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));