diff options
| author | Roy Marples <roy@marples.name> | 2020-11-11 17:44:55 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2020-11-11 17:44:55 +0000 |
| commit | 77260559dd3896fca1fc415ba57a01a71aedbc57 (patch) | |
| tree | d8baa56f5a44d1d5d32d59d57353db86e20a1691 | |
| parent | 040561d61e157e7fb371f1311f0cee3536dee0d2 (diff) | |
| download | dhcpcd-77260559dd3896fca1fc415ba57a01a71aedbc57.tar.xz | |
dhcpcd: Don't create launcher process if keeping in foreground
There is little point.
| -rw-r--r-- | src/dhcpcd.c | 6 | ||||
| -rw-r--r-- | src/privsep.c | 7 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/dhcpcd.c b/src/dhcpcd.c index 7377fcc6..5892a28b 100644 --- a/src/dhcpcd.c +++ b/src/dhcpcd.c @@ -2244,6 +2244,9 @@ printpidfile: if (ctx.stdin_valid && freopen(_PATH_DEVNULL, "w", stdin) == NULL) logwarn("freopen stdin"); + if (!(ctx.options & DHCPCD_DAEMONISE)) + goto start_master; + #if defined(USE_SIGNALS) && !defined(THERE_IS_NO_FORK) if (xsocketpair(AF_UNIX, SOCK_DGRAM | SOCK_CXNB, 0, fork_fd) == -1 || (ctx.stderr_valid && @@ -2335,8 +2338,9 @@ printpidfile: /* We have now forked, setsid, forked once more. * From this point on, we are the controlling daemon. */ - ctx.options |= DHCPCD_STARTED; logdebugx("spawned master process on PID %d", getpid()); +start_master: + ctx.options |= DHCPCD_STARTED; if ((pid = pidfile_lock(ctx.pidfile)) != 0) { logerr("%s: pidfile_lock %d", __func__, pid); #ifdef PRIVSEP diff --git a/src/privsep.c b/src/privsep.c index f43e7ef2..55bb3c42 100644 --- a/src/privsep.c +++ b/src/privsep.c @@ -163,12 +163,13 @@ ps_dropprivs(struct dhcpcd_ctx *ctx) #endif } +#define DHC_NOCHKIO (DHCPCD_STARTED | DHCPCD_DAEMONISE) /* Prohibit writing to files. * Obviously this won't work if we are using a logfile * or redirecting stderr to a file. */ - if (ctx->logfile == NULL && - (ctx->options & DHCPCD_STARTED || - !ctx->stderr_valid || isatty(STDERR_FILENO) == 1)) + if ((ctx->options & DHC_NOCHKIO) == DHC_NOCHKIO || + (ctx->logfile == NULL && + (!ctx->stderr_valid || isatty(STDERR_FILENO) == 1))) { if (setrlimit(RLIMIT_FSIZE, &rzero) == -1) logerr("setrlimit RLIMIT_FSIZE"); |
