From dfc96e4702164a5daa0e8d554d419843b10f353c Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Fri, 13 Nov 2015 16:08:02 +0100 Subject: [PATCH] sched: update timeout randomization Use UTI_GetRandomBytes() instead of random() to calculate the random part of the timeout. This was the only remaining use of random() in the code and the srandom() call can be removed. --- sched.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sched.c b/sched.c index f9720c0..773aab8 100644 --- a/sched.c +++ b/sched.c @@ -150,8 +150,6 @@ SCH_Initialise(void) LCL_ReadRawTime(&last_select_ts_raw); last_select_ts = last_select_ts_raw; - srandom(last_select_ts.tv_sec << 16 ^ last_select_ts.tv_usec); - initialised = 1; } @@ -376,7 +374,10 @@ SCH_AddTimeoutInClass(double min_delay, double separation, double randomness, assert(class < SCH_NumberOfClasses); if (randomness > 0.0) { - r = random() % 0xffff / (0xffff - 1.0) * randomness + 1.0; + uint16_t rnd; + + UTI_GetRandomBytes(&rnd, sizeof (rnd)); + r = rnd / (double)0xffff * randomness + 1.0; min_delay *= r; separation *= r; }