From 126ed2c6e94e1caee3365408d15d200332027374 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 28 May 2015 15:38:28 +0100 Subject: [PATCH] Add routine to generate jittered timeout. --- src/libutil/util.c | 18 ++++++++++++++++++ src/libutil/util.h | 5 +++++ 2 files changed, 23 insertions(+) diff --git a/src/libutil/util.c b/src/libutil/util.c index 5e3e9c4e1..23451412c 100644 --- a/src/libutil/util.c +++ b/src/libutil/util.c @@ -2609,3 +2609,21 @@ rspamd_hash_seed (void) return seed; } + +gdouble +rspamd_time_jitter (gdouble in, gdouble jitter) +{ + guint64 rnd_int; + double res; + const double transform_bias = 2.2204460492503130808472633361816e-16; + + rnd_int = ottery_rand_uint64 () >> 12; + res = rnd_int; + res *= transform_bias; + + if (jitter == 0) { + jitter = in; + } + + return in + jitter * res; +} diff --git a/src/libutil/util.h b/src/libutil/util.h index 80896083c..abc949dfc 100644 --- a/src/libutil/util.h +++ b/src/libutil/util.h @@ -480,4 +480,9 @@ void rspamd_init_libs (void); */ guint64 rspamd_hash_seed (void); +/** + * Return jittered time value + */ +gdouble rspamd_time_jitter (gdouble in, gdouble jitter); + #endif -- 2.39.5