rrdtool plugin: Make sure "cache_timeout + random_variation" dosn't get negative.
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Sat, 6 Nov 2010 13:26:38 +0000 (14:26 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Sat, 6 Nov 2010 13:26:38 +0000 (14:26 +0100)
src/rrdtool.c

index c948d1f..b366a9c 100644 (file)
@@ -661,6 +661,14 @@ static int64_t rrd_get_random_variation (void)
   if (random_timeout <= 0)
     return (0);
 
   if (random_timeout <= 0)
     return (0);
 
+  /* Assure that "cache_timeout + random_variation" is never negative. */
+  if (random_timeout > cache_timeout)
+  {
+         INFO ("rrdtool plugin: Adjusting \"RandomTimeout\" to %.3f seconds.",
+                         CDTIME_T_TO_DOUBLE (cache_timeout));
+         random_timeout = cache_timeout;
+  }
+
   /* This seems a bit complicated, but "random_timeout" is likely larger than
    * RAND_MAX, so we can't simply use modulo here. */
   dbl_timeout = CDTIME_T_TO_DOUBLE (random_timeout);
   /* This seems a bit complicated, but "random_timeout" is likely larger than
    * RAND_MAX, so we can't simply use modulo here. */
   dbl_timeout = CDTIME_T_TO_DOUBLE (random_timeout);