X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fsocket.c;h=2d113aef306d8ef31c2f5ce3689cd14c1e391706;hp=7ff2927aff984152251ffd5de28895bf77c822e0;hb=b708e7cea941538bfd5e20ce0a723c19b7da7d1d;hpb=f1dfb62962fd25c1fba9d9479cb5df2d23e6712d;ds=sidebyside diff --git a/src/socket.c b/src/socket.c index 7ff2927af..2d113aef3 100644 --- a/src/socket.c +++ b/src/socket.c @@ -1400,12 +1400,16 @@ static void socket_sigchld_event(Unit *u, pid_t pid, int code, int status) { s->control_pid = 0; success = is_clean_exit(code, status); - s->failure = s->failure || !success; - if (s->control_command) + if (s->control_command) { exec_status_exit(&s->control_command->exec_status, pid, code, status); + if (s->control_command->ignore) + success = true; + } + log_debug("%s control process exited, code=%s status=%i", u->meta.id, sigchld_code_to_string(code), status); + s->failure = s->failure || !success; if (s->control_command && s->control_command->command_next && success) { log_debug("%s running next command for state %s", u->meta.id, socket_state_to_string(s->state));