Expire timers on expiry time too, not just after.
diff --git a/scheduler/services.c b/scheduler/services.c index 68eeed7..8df0e3e 100644 --- a/scheduler/services.c +++ b/scheduler/services.c
@@ -107,7 +107,9 @@ } if ( s->flags & SERVICE_USE_TIMEOUT ) - if ( timercmp( &s->expire, &curTime, < ) ) + if ((s->expire.tv_sec < curTime.tv_sec) || + ((s->expire.tv_sec == curTime.tv_sec) && + (s->expire.tv_usec <= curTime.tv_usec))) { SERVICE_AddTimeval( &s->expire, s->rate ); callback = s->callback;