diff --git a/AndroidLibV2rayLite/VPN/vpnservice_support.go b/AndroidLibV2rayLite/VPN/vpnservice_support.go index 518036e8..f7456cac 100644 --- a/AndroidLibV2rayLite/VPN/vpnservice_support.go +++ b/AndroidLibV2rayLite/VPN/vpnservice_support.go @@ -24,7 +24,6 @@ type resolved struct { domain string IPs []net.IP Port int - lastResolved time.Time ipIdx uint8 ipLock sync.Mutex lastSwitched time.Time @@ -98,7 +97,7 @@ func (d *ProtectedDialer) PrepareResolveChan() { d.resolveChan = make(chan struct{}) } -func (d *ProtectedDialer) ResolveChan() chan struct{} { +func (d *ProtectedDialer) ResolveChan() <-chan struct{} { return d.resolveChan } @@ -138,10 +137,9 @@ func (d *ProtectedDialer) lookupAddr(addr string) (*resolved, error) { } rs := &resolved{ - domain: host, - IPs: IPs, - Port: portnum, - lastResolved: time.Now(), + domain: host, + IPs: IPs, + Port: portnum, } return rs, nil @@ -152,6 +150,7 @@ func (d *ProtectedDialer) PrepareDomain(domainName string, closeCh <-chan struct log.Printf("Preparing Domain: %s", domainName) d.currentServer = domainName + defer close(d.resolveChan) maxRetry := 10 for { if maxRetry == 0 { @@ -213,10 +212,6 @@ func (d *ProtectedDialer) Dial(ctx context.Context, } } - if time.Now().Sub(d.vServer.lastResolved) > time.Minute * 30 { - d.PrepareDomain(Address, nil) - } - fd, err := d.getFd(dest.Network) if err != nil { return nil, err diff --git a/AndroidLibV2rayLite/interact.go b/AndroidLibV2rayLite/interact.go index e05c00ea..2a2e067b 100644 --- a/AndroidLibV2rayLite/interact.go +++ b/AndroidLibV2rayLite/interact.go @@ -71,10 +71,7 @@ func (v *V2RayPoint) RunLoop() (err error) { if !v.status.IsRunning { v.closeChan = make(chan struct{}) v.dialer.PrepareResolveChan() - go func() { - v.dialer.PrepareDomain(v.DomainName, v.closeChan) - close(v.dialer.ResolveChan()) - }() + go v.dialer.PrepareDomain(v.DomainName, v.closeChan) go func() { select { // wait until resolved