mirror of
https://github.com/2dust/AndroidLibXrayLite.git
synced 2025-06-28 22:29:51 +00:00
Refraction-Name (#133)
* Refraction-Name Synchronization optimization and code reduction * Refraction-Name * Refraction-Name
This commit is contained in:
parent
759e3e7232
commit
acb16186b2
3 changed files with 41 additions and 40 deletions
|
@ -69,42 +69,43 @@ type V2RayVPNServiceSupportsSet interface {
|
|||
func (v *V2RayPoint) RunLoop(prefIPv6 bool) (err error) {
|
||||
v.v2rayOP.Lock()
|
||||
defer v.v2rayOP.Unlock()
|
||||
//Construct Context
|
||||
|
||||
if !v.IsRunning {
|
||||
v.closeChan = make(chan struct{})
|
||||
v.dialer.PrepareResolveChan()
|
||||
go func() {
|
||||
select {
|
||||
// wait until resolved
|
||||
case <-v.dialer.ResolveChan():
|
||||
// shutdown VPNService if server name can not reolved
|
||||
if !v.dialer.IsVServerReady() {
|
||||
log.Println("vServer cannot resolved, shutdown")
|
||||
v.StopLoop()
|
||||
v.SupportSet.Shutdown()
|
||||
}
|
||||
|
||||
// stop waiting if manually closed
|
||||
case <-v.closeChan:
|
||||
}
|
||||
}()
|
||||
|
||||
if v.AsyncResolve {
|
||||
go func() {
|
||||
v.dialer.PrepareDomain(v.DomainName, v.closeChan, prefIPv6)
|
||||
close(v.dialer.ResolveChan())
|
||||
}()
|
||||
} else {
|
||||
v.dialer.PrepareDomain(v.DomainName, v.closeChan, prefIPv6)
|
||||
close(v.dialer.ResolveChan())
|
||||
}
|
||||
|
||||
err = v.pointloop()
|
||||
if v.IsRunning {
|
||||
return
|
||||
}
|
||||
|
||||
v.closeChan = make(chan struct{})
|
||||
v.dialer.PrepareResolveChan()
|
||||
|
||||
go v.handleResolve()
|
||||
|
||||
prepareDomain := func() {
|
||||
v.dialer.PrepareDomain(v.DomainName, v.closeChan, prefIPv6)
|
||||
close(v.dialer.ResolveChan())
|
||||
}
|
||||
|
||||
if v.AsyncResolve {
|
||||
go prepareDomain()
|
||||
} else {
|
||||
prepareDomain()
|
||||
}
|
||||
|
||||
err = v.pointloop()
|
||||
return
|
||||
}
|
||||
|
||||
func (v *V2RayPoint) handleResolve() {
|
||||
select {
|
||||
case <-v.dialer.ResolveChan():
|
||||
if !v.dialer.IsVServerReady() {
|
||||
log.Println("vServer cannot resolved, shutdown")
|
||||
v.StopLoop()
|
||||
v.SupportSet.Shutdown()
|
||||
}
|
||||
case <-v.closeChan:
|
||||
}
|
||||
}
|
||||
|
||||
/*StopLoop Stop V2Ray main loop
|
||||
*/
|
||||
func (v *V2RayPoint) StopLoop() (err error) {
|
||||
|
@ -118,7 +119,7 @@ func (v *V2RayPoint) StopLoop() (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
// Delegate Funcation
|
||||
// Delegate Function
|
||||
func (v V2RayPoint) QueryStats(tag string, direct string) int64 {
|
||||
if v.statsManager == nil {
|
||||
return 0
|
||||
|
@ -174,7 +175,7 @@ func (v *V2RayPoint) MeasureDelay(url string) (int64, error) {
|
|||
go func() {
|
||||
select {
|
||||
case <-v.closeChan:
|
||||
// cancel request if close called during meansure
|
||||
// cancel request if close called during measure
|
||||
cancel()
|
||||
case <-ctx.Done():
|
||||
}
|
||||
|
@ -211,7 +212,7 @@ func MeasureOutboundDelay(ConfigureFileContent string, url string) (int64, error
|
|||
return -1, err
|
||||
}
|
||||
|
||||
// dont listen to anything for test purpose
|
||||
// don't listen to anything for test purpose
|
||||
config.Inbound = nil
|
||||
// config.App: (fakedns), log, dispatcher, InboundConfig, OutboundConfig, (stats), router, dns, (policy)
|
||||
// keep only basic features
|
||||
|
@ -243,7 +244,7 @@ func NewV2RayPoint(s V2RayVPNServiceSupportsSet, adns bool) *V2RayPoint {
|
|||
return v2commlog.NewLogger(createStdoutLogWriter()), nil
|
||||
})
|
||||
|
||||
dialer := NewPreotectedDialer(s)
|
||||
dialer := NewProtectedDialer(s)
|
||||
v2internet.UseAlternativeSystemDialer(dialer)
|
||||
return &V2RayPoint{
|
||||
SupportSet: s,
|
||||
|
@ -300,7 +301,7 @@ func measureInstDelay(ctx context.Context, inst *v2core.Instance, url string) (i
|
|||
return time.Since(start).Milliseconds(), nil
|
||||
}
|
||||
|
||||
// This struct creates our own log writer without datatime stamp
|
||||
// This struct creates our own log writer without datetime stamp
|
||||
// As Android adds time stamps on each line
|
||||
type consoleLogWriter struct {
|
||||
logger *log.Logger
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue