diff options
author | Parménides GV <parmegv@sdf.org> | 2014-12-17 12:41:19 +0100 |
---|---|---|
committer | Parménides GV <parmegv@sdf.org> | 2014-12-17 12:41:19 +0100 |
commit | d58b67f214bdd206cae28911073e450ec593f3dc (patch) | |
tree | 69c09df37ca692d269a1ad8dba7692a76510b001 /app/src/main/java/se/leap/bitmaskclient/eip | |
parent | dbd6f2c57e4565d4e7a76b4ae2a5520aa877f121 (diff) | |
parent | 5d05a628fbd833860abfc85bb450186ec8dedf19 (diff) |
Merge branch 'bug/Cancelling-failed-connection-leaves-network-blocked-#6446' into develop
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/eip')
-rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/eip/EIP.java | 2 | ||||
-rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java | 24 |
2 files changed, 23 insertions, 3 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java b/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java index 7017e874..3d3070c8 100644 --- a/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java +++ b/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java @@ -149,7 +149,7 @@ public final class EIP extends IntentService { EipStatus eip_status = EipStatus.getInstance(); Log.d(TAG, "stopEip(): eip is connected? " + eip_status.isConnected()); int result_code = Activity.RESULT_CANCELED; - if(eip_status.isConnected()) + if(eip_status.isConnected() || eip_status.isConnecting()) result_code = Activity.RESULT_OK; tellToReceiver(ACTION_STOP_EIP, result_code); diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java b/app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java index a6f9fe76..0c773208 100644 --- a/app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java +++ b/app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java @@ -2,14 +2,18 @@ package se.leap.bitmaskclient.eip; import android.content.Intent; import android.net.VpnService; +import android.os.ParcelFileDescriptor; + +import java.io.IOException; public class VoidVpnService extends VpnService { static final String TAG = VoidVpnService.class.getSimpleName(); + static ParcelFileDescriptor fd; @Override public int onStartCommand(Intent intent, int flags, int startId) { - String action = intent.getAction(); + String action = intent != null ? intent.getAction() : ""; if (action == Constants.START_BLOCKING_VPN_PROFILE) { new Thread(new Runnable() { public void run() { @@ -20,7 +24,7 @@ public class VoidVpnService extends VpnService { builder.addRoute("192.168.1.0", 24); builder.addDnsServer("10.42.0.1"); try { - builder.establish(); + fd = builder.establish(); } catch (Exception e) { e.printStackTrace(); } @@ -30,4 +34,20 @@ public class VoidVpnService extends VpnService { } return 0; } + + @Override + public void onRevoke() { + super.onRevoke(); + } + + public static boolean stop() { + try { + fd.close(); + return true; + } catch (IOException | NullPointerException e) { + android.util.Log.d(TAG, "VoidVpnService didn't stop"); + e.printStackTrace(); + return false; + } + } } |