summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-08-14 17:50:54 -0400
committerJune McEnroe <june@causal.agency>2020-08-14 17:55:01 -0400
commit0ca3c5c1038945877fad25916a3e32395b9aeaa9 (patch)
treed77e4650d58216f60e21c2cf05ea1c60a246a7dc
parentSwitch to timespec for timeouts (diff)
downloadcatsit-0ca3c5c1038945877fad25916a3e32395b9aeaa9.tar.gz
catsit-0ca3c5c1038945877fad25916a3e32395b9aeaa9.zip
Reset restartInterval and restartDeadline on start
-rw-r--r--service.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/service.c b/service.c
index 3472151..ef4834a 100644
--- a/service.c
+++ b/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;
2018-09-15Call tls_error when tls_connect_socket failsJune McEnroe 2018-09-15Try successive getaddrinfo resultsJune McEnroe 2018-09-15Render README from chatte.7June McEnroe 2018-09-14Factor out uiPrompt to call on nick changeJune McEnroe 2018-09-14Run test binaries with set -e and semicolonsJune McEnroe BSD make behaves oddly when trying to replace with &. 2018-09-14Fail target when any test binary failsJune McEnroe 2018-09-14Run tests in default targetJune McEnroe 2018-09-14Add termEvent testsJune McEnroe 2018-09-14Check width of entire next word including codesJune McEnroe This results in a tiny bit of premature wrapping for color codes, but that isn't a problem. 2018-09-14Remove word handling from formatParseJune McEnroe 2018-09-14Apply consecutive formatting codes at onceJune McEnroe Fixes the failing splits test. 2018-09-14Add tests for formatParseJune McEnroe With one currently failing so you know they're worth it. 2018-09-13Preview with nick in input windowJune McEnroe 2018-09-13Never send PRIVMSG to TagStatus or TagVerboseJune McEnroe 2018-09-13Move color selection to format.cJune McEnroe 2018-09-13Fix len for format->split at end of stringJune McEnroe 2018-09-13Avoid uninitialized x in uiReadJune McEnroe 2018-09-13Add IRCDefault to colors enumJune McEnroe 2018-09-13Return a format->split even at the end of the stringJune McEnroe 2018-09-13Fix weird tab-complete after commaJune McEnroe I have no idea why I did this. 2018-09-13Rewrite UI againJune McEnroe The persistent topic is gone and the status line is now at the top. The status formatting still needs to be reworked. I also want to try showing the nick in the input window so it really looks like your next message. 2018-09-12Add note about C-oJune McEnroe Why are there so few well usable ctrl key bindings? 2018-09-12Use formatParse split to position input cursorJune McEnroe 2018-09-12Factor out IRC formatting parsingJune McEnroe 2018-09-11Add /help equivalent to /manJune McEnroe 2018-09-11Don't render every PM as a pingJune McEnroe 2018-09-11Add urlOpenMatchJune McEnroe 2018-09-10Depend on man.sh for chroot.tar targetJune McEnroe 2018-09-10Set LESSSECURE=1 in man.shJune McEnroe Ridiculous. 2018-09-10Add /man commandJune McEnroe 2018-09-10Install man page in chrootJune McEnroe 2018-09-10Install man pageJune McEnroe 2018-09-10Split keys into subsections and document colorsJune McEnroe 2018-09-10Add "blank" lines to chatte.1June McEnroe 2018-09-10Document key bindings in chatte.1June McEnroe 2018-09-08Document slash commands in chatte.1June McEnroe