summaryrefslogtreecommitdiff
path: root/src/userdb/userdbd-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/userdb/userdbd-manager.c')
-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) {