]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Add routine to generate jittered timeout.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 28 May 2015 14:38:28 +0000 (15:38 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 28 May 2015 14:38:28 +0000 (15:38 +0100)
src/libutil/util.c
src/libutil/util.h

index 5e3e9c4e18724eb6f446a36782bdc7ab4d1dba97..23451412c09985355005c78f94afb26c2a76e2ee 100644 (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;
+}
index 80896083cd468b5e183f580058b5cb1774780be5..abc949dfcf080b447aa113ff0eae8cfefbf1fe3b 100644 (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