mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-05 04:56:10 +02:00
BUG/MINOR: checks/threads: use ha_random() and not rand()
In order to honor spread_checks we currently call rand() which is not
thread safe and which must never turn its internal state to zero. This
is not thread safe, let's use ha_random() instead. This is a complement
to commimt 52bf839394 ("BUG/MEDIUM: random: implement a thread-safe and
process-safe PRNG") and may be backported with it.
This commit is contained in:
parent
b9f54c5592
commit
5a6d3e797e
@ -2183,7 +2183,7 @@ static struct task *process_chk_proc(struct task *t, void *context, unsigned sho
|
||||
rv = 0;
|
||||
if (global.spread_checks > 0) {
|
||||
rv = srv_getinter(check) * global.spread_checks / 100;
|
||||
rv -= (int) (2 * rv * (rand() / (RAND_MAX + 1.0)));
|
||||
rv -= (int) (2 * rv * (ha_random32() / 4294967295.0));
|
||||
}
|
||||
t->expire = tick_add(now_ms, MS_TO_TICKS(srv_getinter(check) + rv));
|
||||
}
|
||||
@ -2391,7 +2391,7 @@ static struct task *process_chk_conn(struct task *t, void *context, unsigned sho
|
||||
rv = 0;
|
||||
if (global.spread_checks > 0) {
|
||||
rv = srv_getinter(check) * global.spread_checks / 100;
|
||||
rv -= (int) (2 * rv * (rand() / (RAND_MAX + 1.0)));
|
||||
rv -= (int) (2 * rv * (ha_random32() / 4294967295.0));
|
||||
}
|
||||
t->expire = tick_add(now_ms, MS_TO_TICKS(srv_getinter(check) + rv));
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user