diff options
author | Lennart Poettering <lennart@poettering.net> | 2023-03-15 15:01:11 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2023-03-15 15:57:25 +0100 |
commit | 755424e94ff51f848e5202a0b7ac41e485c93691 (patch) | |
tree | be63565ba0dce61acacfd21e35e38e2546846174 /src | |
parent | 54f5522664bfcf119e2ad58229a6be171249807d (diff) | |
download | systemd-755424e94ff51f848e5202a0b7ac41e485c93691.tar.gz |
userdbd: make use of FORK_CLOSE_ALL_FDS + FORK_REOPEN_LOG where we can
Diffstat (limited to 'src')
-rw-r--r-- | src/userdb/userdbd-manager.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/userdb/userdbd-manager.c b/src/userdb/userdbd-manager.c index 81f327ef2e..4e70f4259b 100644 --- a/src/userdb/userdbd-manager.c +++ b/src/userdb/userdbd-manager.c @@ -156,23 +156,18 @@ static int start_one_worker(Manager *m) { fixed = set_size(m->workers_fixed) < USERDB_WORKERS_MIN; - r = safe_fork("(sd-worker)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid); + r = safe_fork_full( + "(sd-worker)", + /* stdio_fds= */ NULL, + &m->listen_fd, 1, + FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_REOPEN_LOG|FORK_LOG|FORK_CLOSE_ALL_FDS, + &pid); if (r < 0) return log_error_errno(r, "Failed to fork new worker child: %m"); if (r == 0) { char pids[DECIMAL_STR_MAX(pid_t)]; /* Child */ - log_close(); - - r = close_all_fds(&m->listen_fd, 1); - if (r < 0) { - log_error_errno(r, "Failed to close fds in child: %m"); - _exit(EXIT_FAILURE); - } - - log_open(); - if (m->listen_fd == 3) { r = fd_cloexec(3, false); if (r < 0) { |