Call daemon() only in parent and before proc_exec() to avoid orphaning child
authortobhe <tobhe@openbsd.org>
Mon, 8 Apr 2024 12:45:18 +0000 (12:45 +0000)
committertobhe <tobhe@openbsd.org>
Mon, 8 Apr 2024 12:45:18 +0000 (12:45 +0000)
processes. Synced from relayd.

ok kn@

usr.sbin/httpd/httpd.c
usr.sbin/httpd/proc.c

index af863cf..686f41c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: httpd.c,v 1.73 2022/09/02 07:38:14 benno Exp $        */
+/*     $OpenBSD: httpd.c,v 1.74 2024/04/08 12:45:18 tobhe Exp $        */
 
 /*
  * Copyright (c) 2014 Reyk Floeter <reyk@openbsd.org>
@@ -220,8 +220,6 @@ main(int argc, char *argv[])
        proc_init(ps, procs, nitems(procs), debug, argc0, argv, proc_id);
 
        log_procinit("parent");
-       if (!debug && daemon(1, 0) == -1)
-               err(1, "failed to daemonize");
 
        if (ps->ps_noaction == 0)
                log_info("startup");
index e8b08dd..58ea14c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: proc.c,v 1.43 2024/01/17 08:22:40 claudio Exp $       */
+/*     $OpenBSD: proc.c,v 1.44 2024/04/08 12:45:18 tobhe Exp $ */
 
 /*
  * Copyright (c) 2010 - 2016 Reyk Floeter <reyk@openbsd.org>
@@ -205,6 +205,9 @@ proc_init(struct privsep *ps, struct privsep_proc *procs, unsigned int nproc,
                privsep_process = PROC_PARENT;
                proc_setup(ps, procs, nproc);
 
+               if (!debug && daemon(1, 0) == -1)
+                       fatal("failed to daemonize");
+
                /*
                 * Create the children sockets so we can use them
                 * to distribute the rest of the socketpair()s using