mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2024-11-16 03:32:33 +08:00
fix: RoundRobin strategy of load balance when called multiple times (#390)
This commit is contained in:
parent
6fe1766c83
commit
b2d1cea759
|
@ -115,11 +115,20 @@ func (lb *LoadBalance) SupportUDP() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func strategyRoundRobin() strategyFn {
|
func strategyRoundRobin() strategyFn {
|
||||||
|
flag := true
|
||||||
idx := 0
|
idx := 0
|
||||||
return func(proxies []C.Proxy, metadata *C.Metadata) C.Proxy {
|
return func(proxies []C.Proxy, metadata *C.Metadata) C.Proxy {
|
||||||
length := len(proxies)
|
length := len(proxies)
|
||||||
for i := 0; i < length; i++ {
|
for i := 0; i < length; i++ {
|
||||||
idx = (idx + 1) % length
|
flag = !flag
|
||||||
|
if flag {
|
||||||
|
idx = (idx - 1) % length
|
||||||
|
} else {
|
||||||
|
idx = (idx + 2) % length
|
||||||
|
}
|
||||||
|
if idx < 0 {
|
||||||
|
idx = idx + length
|
||||||
|
}
|
||||||
proxy := proxies[idx]
|
proxy := proxies[idx]
|
||||||
if proxy.Alive() {
|
if proxy.Alive() {
|
||||||
return proxy
|
return proxy
|
||||||
|
|
Loading…
Reference in New Issue
Block a user