X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fsocket.c;h=beb328657fe5eb34a5d5eabffb4922f837177872;hp=130f51c0789927ded5e5375ede69498a372bcac0;hb=bfe95f35bf87c91d63b9d62dde5f029dd38d27a4;hpb=973bcd30bfd8c5d6d28d40075ae9b2561f9d3e2a diff --git a/src/socket.c b/src/socket.c index 130f51c07..beb328657 100644 --- a/src/socket.c +++ b/src/socket.c @@ -42,6 +42,7 @@ #include "bus-errors.h" #include "label.h" #include "exit-status.h" +#include "def.h" static const UnitActiveState state_translation_table[_SOCKET_STATE_MAX] = { [SOCKET_DEAD] = UNIT_INACTIVE, @@ -1039,9 +1040,7 @@ static void socket_enter_signal(Socket *s, SocketState state, bool success) { int sig = (state == SOCKET_STOP_PRE_SIGTERM || state == SOCKET_FINAL_SIGTERM) ? s->exec_context.kill_signal : SIGKILL; if (s->control_pid > 0) { - if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ? - -s->control_pid : - s->control_pid, sig) < 0 && errno != ESRCH) + if (kill_and_sigcont(s->control_pid, sig) < 0 && errno != ESRCH) log_warning("Failed to kill control process %li: %m", (long) s->control_pid); else @@ -1067,6 +1066,7 @@ static void socket_enter_signal(Socket *s, SocketState state, bool success) { wait_for_exit = true; set_free(pid_set); + pid_set = NULL; } } @@ -1696,6 +1696,7 @@ static void socket_timer_event(Unit *u, uint64_t elapsed, Watch *w) { case SOCKET_START_PRE: log_warning("%s starting timed out. Terminating.", u->meta.id); socket_enter_signal(s, SOCKET_FINAL_SIGTERM, false); + break; case SOCKET_START_POST: log_warning("%s starting timed out. Stopping.", u->meta.id); @@ -1836,7 +1837,7 @@ static int socket_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError } if (s->control_pid > 0) - if (kill(mode == KILL_PROCESS_GROUP ? -s->control_pid : s->control_pid, signo) < 0) + if (kill(s->control_pid, signo) < 0) r = -errno; if (mode == KILL_CONTROL_GROUP) {