Change: adjust tolerance logic (#864)

This commit is contained in:
Fndroid 2020-08-06 20:12:03 +08:00 committed by GitHub
parent 92a23f1eab
commit 83a684c551
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -22,7 +22,6 @@ func urlTestWithTolerance(tolerance uint16) urlTestOption {
type URLTest struct {
*outbound.Base
tolerance uint16
lastDelay uint16
fastNode C.Proxy
single *singledo.Single
fastSingle *singledo.Single
@ -63,13 +62,6 @@ func (u *URLTest) proxies() []C.Proxy {
func (u *URLTest) fast() C.Proxy {
elm, _, _ := u.fastSingle.Do(func() (interface{}, error) {
// tolerance
if u.tolerance != 0 && u.fastNode != nil {
if u.fastNode.LastDelay() < u.lastDelay+u.tolerance {
return u.fastNode, nil
}
}
proxies := u.proxies()
fast := proxies[0]
min := fast.LastDelay()
@ -85,9 +77,12 @@ func (u *URLTest) fast() C.Proxy {
}
}
u.fastNode = fast
u.lastDelay = fast.LastDelay()
return fast, nil
// tolerance
if u.fastNode == nil || u.fastNode.LastDelay() > fast.LastDelay() + u.tolerance {
u.fastNode = fast
}
return u.fastNode, nil
})
return elm.(C.Proxy)