Reset restartInterval and restartDeadline on start
This commit is contained in:
parent
04ca84acda
commit
0ca3c5c103
18
service.c
18
service.c
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user