Software /
code /
verse
Diff
client.lua @ 458:6c3797c0bb44
client: Correctly randomize SRV targets (thanks Zash)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 16 Mar 2023 11:42:28 +0000 |
parent | 457:73d4eb93657b |
child | 459:6be4182cfb31 |
line wrap: on
line diff
--- a/client.lua Thu Mar 16 11:41:52 2023 +0000 +++ b/client.lua Thu Mar 16 11:42:28 2023 +0000 @@ -23,8 +23,17 @@ local xmlns_stream = "http://etherx.jabber.org/streams"; -local function compare_srv_priorities(a,b) - return a.priority < b.priority or (a.priority == b.priority and a.weight > b.weight); +local function compare_srv_priorities(a, b) + if a.priority == b.priority then + if not a.weight_r then + a.weight_r = math.random(); + end + if not b.weight_r then + b.weight_r = math.random(); + end + return (1 + a.weight) * a.weight_r > (1 + b.weight) * b.weight_r; + end + return a.priority < b.priority; end local stream_callbacks = {