aboutsummaryrefslogtreecommitdiffstats
path: root/www-misc/slowcgi/files/7.0-Add-flag-to-run-in-the-foreground.patch
blob: 69e31bff65fdcb5660e493b2f6b1421b7c49d733 (plain) (blame)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
From baed2c0935ca606d6d55d70b07db0cec7322f10c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Wolfgang=20M=C3=BCller?= <wolf@oriole.systems>
Date: Fri, 29 Oct 2021 11:45:32 +0200
Subject: [PATCH] Add flag to run in the foreground

slowcgi already has the -d flag to disable forking, but that particular
flag also stops slowcgi from logging to syslog and is intended for
debugging purposes.

Ordinarily this would be fine, but sadly we know of no clean way to
track the PID of a forked process with Gentoo's OpenRC and its
start-stop-daemon(8). We could add support to write a pidfile instead,
but since we want to support multiple invocations of slowcgi through
OpenRC and ${RC_SVCNAME}, we need a way of specifying the pidfile
location in the init script itself.

To solve this reasonably cleanly, add a flag that *only* controls
whether or not the program daemonizes or not. Make sure to mention this
in the manual too.
---
 slowcgi.8 |  6 +++++-
 slowcgi.c | 10 +++++++---
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/slowcgi.8 b/slowcgi.8
index cfc4dee..bdfc0b7 100644
--- a/slowcgi.8
+++ b/slowcgi.8
@@ -22,7 +22,7 @@
 .Nd a FastCGI to CGI wrapper server
 .Sh SYNOPSIS
 .Nm
-.Op Fl dv
+.Op Fl dfv
 .Op Fl p Ar path
 .Op Fl s Ar socket
 .Op Fl U Ar user
@@ -64,6 +64,10 @@ Do not daemonize.
 If this option is specified,
 .Nm
 will run in the foreground and log to stderr.
+.It Fl f
+As
+.Fl d ,
+but log to syslog.
 .It Fl p Ar path
 .Xr chroot 2
 to
diff --git a/slowcgi.c b/slowcgi.c
index 9999ac8..96662e0 100644
--- a/slowcgi.c
+++ b/slowcgi.c
@@ -269,7 +269,7 @@ usage(void)
 {
 	extern char *__progname;
 	fprintf(stderr,
-	    "usage: %s [-dv] [-p path] [-s socket] [-U user] [-u user]\n",
+	    "usage: %s [-dfv] [-p path] [-s socket] [-U user] [-u user]\n",
 	    __progname);
 	exit(1);
 }
@@ -277,6 +277,7 @@ usage(void)
 struct timeval		timeout = { TIMEOUT_DEFAULT, 0 };
 struct slowcgi_proc	slowcgi_proc;
 int			debug = 0;
+int			foreground = 0;
 int			verbose = 0;
 int			on = 1;
 char			*fcgi_socket = "/var/www/run/slowcgi.sock";
@@ -310,11 +311,14 @@ main(int argc, char *argv[])
 		}
 	}
 
-	while ((c = getopt(argc, argv, "dp:s:U:u:v")) != -1) {
+	while ((c = getopt(argc, argv, "dfp:s:U:u:v")) != -1) {
 		switch (c) {
 		case 'd':
 			debug++;
 			break;
+		case 'f':
+			foreground = 1;
+			break;
 		case 'p':
 			chrootpath = optarg;
 			break;
@@ -339,7 +343,7 @@ main(int argc, char *argv[])
 	if (geteuid() != 0)
 		errx(1, "need root privileges");
 
-	if (!debug && daemon(0, 0) == -1)
+	if (!debug && !foreground && daemon(0, 0) == -1)
 		err(1, "daemon");
 
 	if (!debug) {
-- 
2.33.1