diff --git a/AndroidLibV2rayLite/Process/Escort/escort.go b/AndroidLibV2rayLite/Process/Escort/escort.go index 69c9430a..35670bbd 100644 --- a/AndroidLibV2rayLite/Process/Escort/escort.go +++ b/AndroidLibV2rayLite/Process/Escort/escort.go @@ -10,7 +10,7 @@ import ( "github.com/2dust/AndroidLibV2rayLite/CoreI" ) -func (v *Escorting) EscortRun(proc string, pt []string, additionalEnv string, sendFd func() int) { +func (v *Escorting) EscortRun(proc string, pt []string, additionalEnv string) { log.Println(proc, pt) count := 0 for count <= 42 { @@ -37,13 +37,6 @@ func (v *Escorting) EscortRun(proc string, pt []string, additionalEnv string, se *v.escortProcess = append(*v.escortProcess, cmd.Process) log.Println("EscortRun Waiting....") - if count > 0 { - go func() { - time.Sleep(time.Second) - sendFd() - }() - } - if err := cmd.Wait(); err != nil { log.Println("EscortRun cmd.Wait err:", err) } diff --git a/AndroidLibV2rayLite/interact.go b/AndroidLibV2rayLite/interact.go index 57b45289..b07cd2f0 100644 --- a/AndroidLibV2rayLite/interact.go +++ b/AndroidLibV2rayLite/interact.go @@ -57,7 +57,6 @@ type V2RayVPNServiceSupportsSet interface { Shutdown() int Protect(int) int OnEmitStatus(int, string) int - SendFd() int } /*RunLoop Run V2Ray main loop @@ -81,7 +80,6 @@ func (v *V2RayPoint) RunLoop() (err error) { if !v.dialer.IsVServerReady() { log.Println("vServer cannot resolved, shutdown") v.StopLoop() - v.SupportSet.Shutdown() } // stop waiting if manually closed @@ -130,19 +128,10 @@ func (v *V2RayPoint) shutdownInit() { v.status.Vpoint = nil v.statsManager = nil v.escorter.EscortingDown() + v.SupportSet.Shutdown() } func (v *V2RayPoint) pointloop() error { - if err := v.runTun2socks(); err != nil { - log.Println(err) - return err - } - - log.Printf("EnableLocalDNS: %v\nForwardIpv6: %v\nDomainName: %s", - v.EnableLocalDNS, - v.ForwardIpv6, - v.DomainName) - log.Println("loading v2ray config") config, err := v2serial.LoadJSONConfig(strings.NewReader(v.ConfigureFileContent)) if err != nil { @@ -170,6 +159,17 @@ func (v *V2RayPoint) pointloop() error { v.SupportSet.Prepare() v.SupportSet.Setup(v.status.GetVPNSetupArg(v.EnableLocalDNS, v.ForwardIpv6)) v.SupportSet.OnEmitStatus(0, "Running") + + if err := v.runTun2socks(); err != nil { + log.Println(err) + return err + } + + log.Printf("EnableLocalDNS: %v\nForwardIpv6: %v\nDomainName: %s", + v.EnableLocalDNS, + v.ForwardIpv6, + v.DomainName) + return nil } @@ -229,8 +229,7 @@ func (v V2RayPoint) runTun2socks() error { v.escorter.EscortingUp() go v.escorter.EscortRun( v.status.GetApp("libtun2socks.so"), - v.status.GetTun2socksArgs(v.EnableLocalDNS, v.ForwardIpv6), "", - v.SupportSet.SendFd) + v.status.GetTun2socksArgs(v.EnableLocalDNS, v.ForwardIpv6), "") return nil } diff --git a/V2rayNG/app/src/main/AndroidManifest.xml b/V2rayNG/app/src/main/AndroidManifest.xml index 3e883469..28d37785 100644 --- a/V2rayNG/app/src/main/AndroidManifest.xml +++ b/V2rayNG/app/src/main/AndroidManifest.xml @@ -27,6 +27,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" + android:extractNativeLibs="true" android:theme="@style/AppTheme"> = Build.VERSION_CODES.P) { try { connectivity.requestNetwork(defaultNetworkRequest, defaultNetworkCallback) - } catch (ignored: Exception) { - // ignored + } catch (e: Exception) { + e.printStackTrace() } } @@ -172,6 +172,8 @@ class V2RayVpnService : VpnService(), ServiceControl { e.printStackTrace() stopV2Ray() } + + sendFd() } private fun sendFd() { @@ -181,7 +183,7 @@ class V2RayVpnService : VpnService(), ServiceControl { GlobalScope.launch(Dispatchers.IO) { var tries = 0 while (true) try { - Thread.sleep(50L shl tries) + Thread.sleep(1000L shl tries) Log.d(packageName, "sendFd tries: $tries") LocalSocket().use { localSocket -> localSocket.connect(LocalSocketAddress(path, LocalSocketAddress.Namespace.FILESYSTEM)) @@ -251,7 +253,4 @@ class V2RayVpnService : VpnService(), ServiceControl { return protect(socket) } - override fun vpnSendFd() { - sendFd() - } }