diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-05-28 15:38:28 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-05-28 15:38:28 +0100 |
commit | 126ed2c6e94e1caee3365408d15d200332027374 (patch) | |
tree | 41140597b292c2486e87b4568ff5a57ffb21369a /src/libutil | |
parent | 58967f69668cee84a7451a14f04cae08958304fa (diff) | |
download | rspamd-126ed2c6e94e1caee3365408d15d200332027374.tar.gz rspamd-126ed2c6e94e1caee3365408d15d200332027374.zip |
Add routine to generate jittered timeout.
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/util.c | 18 | ||||
-rw-r--r-- | src/libutil/util.h | 5 |
2 files changed, 23 insertions, 0 deletions
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 |