Download raw body.
httpd: don't orphan children
Calling daemon() after proc_init() will detach the children from the
parent process. Also return errno if daemon fails.
See ps auxf:
root 70446 0.0 0.1 1964 2360 ?? Ip Wed11PM 0:00.02 - /usr/sbin/httpd
www 22440 0.0 0.1 2192 4704 ?? Ipc Wed11PM 0:02.88 - httpd: server (httpd)
www 27514 0.0 0.1 1664 2940 ?? Ipc Wed11PM 0:00.02 - httpd: logger (httpd)
which should be:
root 43158 0.0 0.1 1964 2344 ?? Ip 6:58PM 0:00.01 - /usr/sbin/httpd
www 64572 0.0 0.1 1932 4280 ?? Ipc 6:58PM 0:00.01 |-- httpd: server (h
www 16700 0.0 0.1 1660 2804 ?? Ipc 6:58PM 0:00.01 `-- httpd: logger (h
patch syncs what iked does.
ok?
diff /home/user/got/co/src
commit - 3b374a56007af68fb6fd1926b370d0a3e8d6dbca
path + /home/user/got/co/src
blob - af863cf2710dadce01a85cb618fe5bfbb91b9adc
file + usr.sbin/httpd/httpd.c
--- usr.sbin/httpd/httpd.c
+++ usr.sbin/httpd/httpd.c
@@ -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");
blob - e8b08dd23175817590214abb7b433caf541e215d
file + usr.sbin/httpd/proc.c
--- usr.sbin/httpd/proc.c
+++ usr.sbin/httpd/proc.c
@@ -203,6 +203,8 @@ proc_init(struct privsep *ps, struct privsep_proc *pro
if (proc_id == PROC_PARENT) {
privsep_process = PROC_PARENT;
+ if (!debug && daemon(1, 0) == -1)
+ fatal("failed to daemonize");
proc_setup(ps, procs, nproc);
/*
httpd: don't orphan children