summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java24
1 files changed, 22 insertions, 2 deletions
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;
+ }
+ }
}