Merge pull request #657 from rurirei/native

native fixes
This commit is contained in:
2dust
2020-10-15 08:18:48 +08:00
committed by GitHub
7 changed files with 20 additions and 43 deletions

View File

@@ -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)
}

View File

@@ -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
}

View File

@@ -27,6 +27,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:extractNativeLibs="true"
android:theme="@style/AppTheme">
<activity
android:name=".ui.MainActivity"

View File

@@ -11,5 +11,4 @@ interface ServiceControl {
fun vpnProtect(socket: Int): Boolean
fun vpnSendFd()
}

View File

@@ -37,10 +37,6 @@ class V2RayProxyOnlyService : Service(), ServiceControl {
return true
}
override fun vpnSendFd() {
// do nothing
}
override fun onBind(intent: Intent?): IBinder? {
return null
}

View File

@@ -111,16 +111,6 @@ object V2RayServiceManager {
}
}
override fun sendFd(): Long {
val serviceControl = serviceControl?.get() ?: return -1
try {
serviceControl.vpnSendFd()
} catch (e: Exception) {
Log.d(serviceControl.getService().packageName, e.toString())
return -1
}
return 0
}
}
fun startV2rayPoint() {

View File

@@ -155,8 +155,8 @@ class V2RayVpnService : VpnService(), ServiceControl {
if (Build.VERSION.SDK_INT >= 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()
}
}