summaryrefslogtreecommitdiff
path: root/src/userdb
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2023-03-15 15:01:11 +0100
committerLennart Poettering <lennart@poettering.net>2023-03-15 15:57:25 +0100
commit755424e94ff51f848e5202a0b7ac41e485c93691 (patch)
treebe63565ba0dce61acacfd21e35e38e2546846174 /src/userdb
parent54f5522664bfcf119e2ad58229a6be171249807d (diff)
downloadsystemd-755424e94ff51f848e5202a0b7ac41e485c93691.tar.gz
userdbd: make use of FORK_CLOSE_ALL_FDS + FORK_REOPEN_LOG where we can
Diffstat (limited to 'src/userdb')
-rw-r--r--src/userdb/userdbd-manager.c17
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) {