File: 0003-supervise.c-restart-process-when-fork-fails.patch

package info (click to toggle)
daemontools 1%3A0.76-15
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,124 kB
  • sloc: ansic: 3,780; sh: 464; makefile: 392
file content (42 lines) | stat: -rw-r--r-- 1,071 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
From: =?utf-8?b?SmFuIE1vasW+w63FoQ==?= <jan.mojzis@gmail.com>
Date: Sun, 7 Feb 2021 22:33:42 +0100
Subject: supervise.c restart process when fork fails
Forwarded: no

---
 daemontools-0.76/src/supervise.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Index: daemontools/daemontools-0.76/src/supervise.c
===================================================================
--- daemontools.orig/daemontools-0.76/src/supervise.c
+++ daemontools/daemontools-0.76/src/supervise.c
@@ -86,6 +86,8 @@ void trigger(void)
 
 const char *run[2] = { "./run", 0 };
 
+int flagfailed = 0;
+
 void trystart(void)
 {
   int f;
@@ -94,6 +96,7 @@ void trystart(void)
     case -1:
       strerr_warn4(WARNING,"unable to fork for ",dir,", sleeping 60 seconds: ",&strerr_sys);
       deepsleep(60);
+      flagfailed = 1;
       trigger();
       return;
     case 0:
@@ -153,6 +156,11 @@ void doit(void)
       }
     }
 
+    if (flagfailed && flagwant && flagwantup){
+      flagfailed = 0;
+      trystart();
+    }
+
     if (read(fdcontrol,&ch,1) == 1)
       switch(ch) {
 	case 'd':