Browse Source

Add routine to generate jittered timeout.

tags/1.0.0
Vsevolod Stakhov 9 years ago
parent
commit
126ed2c6e9
2 changed files with 23 additions and 0 deletions
  1. 18
    0
      src/libutil/util.c
  2. 5
    0
      src/libutil/util.h

+ 18
- 0
src/libutil/util.c View File

@@ -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;
}

+ 5
- 0
src/libutil/util.h View File

@@ -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

Loading…
Cancel
Save