Change: adjust tolerance logic (#864)
This commit is contained in:
parent
92a23f1eab
commit
83a684c551
1 changed files with 6 additions and 11 deletions
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue