Reset restartInterval and restartDeadline on start

This commit is contained in:
C. McEnroe 2020-08-14 17:50:54 -04:00
parent 04ca84acda
commit 0ca3c5c103
1 changed files with 15 additions and 3 deletions

View File

@ -22,7 +22,9 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <syslog.h>
#include <time.h>
#include <unistd.h>
#include "daemon.h"
@ -107,14 +109,24 @@ err:
void serviceStart(struct Service *service) {
if (service->state == Start) return;
service->intent = Start;
// TODO: Reset restart interval.
if (service->intent == Start) {
struct timespec backoff = service->restartInterval;
timespecadd(&backoff, &backoff, &service->restartInterval);
} else {
service->restartInterval = restartInterval;
}
clock_gettime(CLOCK_MONOTONIC_FAST, &service->restartDeadline);
timespecadd(
&service->restartDeadline, &service->restartInterval,
&service->restartDeadline
);
service->intent = Start;
service->pid = fork();
if (service->pid < 0) {
syslog(LOG_ERR, "fork: %m");
return;
// FIXME: Do we treat this as a restart condition?
}
if (service->pid) {
service->state = Start;