*/
int get_next_update(struct rrd_database **dblist, const char **name)
{
- int i, sleeptime = 0, diff;
+ int i, sleeptime = -1, diff;
time_t now = time(0);
for (i = 0; dblist[i]; i++) {
+ if (dblist[i]->update_active)
+ continue;
+
diff = ROUND_UP(dblist[i]->last_update, dblist[i]->interval) - now;
diff = max(diff, dblist[i]->update_backoff - now);
- if (dblist[i]->update_active)
- diff = (now + dblist[i]->interval) % dblist[i]->interval;
-
- if (!sleeptime) {
- sleeptime = diff;
- *name = dblist[i]->name;
- }
- if (sleeptime > diff) {
+ if (sleeptime == -1 || sleeptime > diff) {
sleeptime = diff;
*name = dblist[i]->name;
}
}
- if (sleeptime == 0)
- sleeptime = -1;
-
return sleeptime;
}