From 28b03ef14e7a55e21d5b413f8cef81558961c360 Mon Sep 17 00:00:00 2001 From: Keeyou Date: Tue, 26 Dec 2023 17:47:08 +0800 Subject: [PATCH] android: fix an issue causing vpn can't be stopped --- .../yass/src/main/java/it/gui/yass/MainActivity.java | 12 +++++++++--- third_party/tun2proxy | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/android/yass/src/main/java/it/gui/yass/MainActivity.java b/android/yass/src/main/java/it/gui/yass/MainActivity.java index 89c90867a..ebcb6120b 100644 --- a/android/yass/src/main/java/it/gui/yass/MainActivity.java +++ b/android/yass/src/main/java/it/gui/yass/MainActivity.java @@ -24,6 +24,7 @@ import androidx.appcompat.app.AppCompatDelegate; +import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.nio.ByteBuffer; @@ -201,16 +202,21 @@ private void onStartVpn() { statusTextView.setText(String.format(res.getString(R.string.status_started_with_error_msg), "Unable to run create tunFd")); return; } - int fd = tunFd.getFd(); - tunFd.detachFd(); + tun2proxyThread = new Thread(){ public void run() { Log.v(TAG, "tun2proxy thr started"); - int ret = tun2ProxyStart("socks5://127.0.0.1:3000", fd, vpnService.DEFAULT_MTU, false, true); + int fd = tunFd.getFd(); + int ret = tun2ProxyStart("socks5://127.0.0.1:3000", fd, vpnService.DEFAULT_MTU, true, true); if (ret != 0) { // TODO should we handle this error? Log.e(TAG, String.format("Unable to run tun2ProxyStart: %d", ret)); } + try { + tunFd.close(); + } catch (IOException e) { + // nop + } Log.v(TAG, "tun2proxy thr stopped"); } }; diff --git a/third_party/tun2proxy b/third_party/tun2proxy index bfcc51f20..69da58d2c 160000 --- a/third_party/tun2proxy +++ b/third_party/tun2proxy @@ -1 +1 @@ -Subproject commit bfcc51f20fa96030620ae7d5daf4b88339f6fd49 +Subproject commit 69da58d2cc05119573c2105ae3bebb16f1abcc4c