diff options
-rw-r--r-- | plugin/loadbalance/loadbalance.go | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/plugin/loadbalance/loadbalance.go b/plugin/loadbalance/loadbalance.go index 3f3049202..0d67d3e4a 100644 --- a/plugin/loadbalance/loadbalance.go +++ b/plugin/loadbalance/loadbalance.go @@ -61,13 +61,12 @@ func roundRobinShuffle(records []dns.RR) { records[0], records[1] = records[1], records[0] } default: - for j := 0; j < l*(int(dns.Id())%4+1); j++ { - q := int(dns.Id()) % l - p := int(dns.Id()) % l - if q == p { - p = (p + 1) % l + for j := 0; j < l; j++ { + p := j + (int(dns.Id()) % (l-j)) + if j == p { + continue } - records[q], records[p] = records[p], records[q] + records[j], records[p] = records[p], records[j] } } } |