X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fsocket.c;h=9045a2fc85a3c7c454bcc8ccd4408676bb91236d;hp=c41130ce726e4046a15980ee84d8ddffed416fb4;hb=441dfe092acb0f283f7712a80e144b4392b526a0;hpb=0a494f1ff323ef36b7acc637c198fdfa240c2bb2 diff --git a/src/socket.c b/src/socket.c index c41130ce7..9045a2fc8 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, @@ -67,7 +68,7 @@ static void socket_init(Unit *u) { s->backlog = SOMAXCONN; s->timeout_usec = DEFAULT_TIMEOUT_USEC; s->directory_mode = 0755; - s->socket_mode = 0666; + s->socket_mode = 0777; s->max_connections = 64; @@ -1039,9 +1040,9 @@ 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(s->exec_context.kill_mode == KILL_PROCESS_GROUP ? - -s->control_pid : - s->control_pid, sig) < 0 && errno != ESRCH) + if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ? + -s->control_pid : + s->control_pid, sig) < 0 && errno != ESRCH) log_warning("Failed to kill control process %li: %m", (long) s->control_pid); else @@ -1060,7 +1061,7 @@ static void socket_enter_signal(Socket *s, SocketState state, bool success) { if ((r = set_put(pid_set, LONG_TO_PTR(s->control_pid))) < 0) goto fail; - if ((r = cgroup_bonding_kill_list(s->meta.cgroup_bondings, sig, pid_set)) < 0) { + if ((r = cgroup_bonding_kill_list(s->meta.cgroup_bondings, sig, true, pid_set)) < 0) { if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) log_warning("Failed to kill control group: %s", strerror(-r)); } else if (r > 0) @@ -1363,7 +1364,7 @@ static int socket_start(Unit *u) { if (s->service->meta.load_state != UNIT_LOADED) return -ENOENT; - /* If the service is alredy active we cannot start the + /* If the service is already active we cannot start the * socket */ if (s->service->state != SERVICE_DEAD && s->service->state != SERVICE_FAILED && @@ -1798,7 +1799,7 @@ void socket_connection_unref(Socket *s) { /* The service is dead. Yay! * - * This is strictly for one-onstance-per-connection + * This is strictly for one-instance-per-connection * services. */ assert(s->n_connections > 0); @@ -1852,7 +1853,7 @@ static int socket_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError goto finish; } - if ((q = cgroup_bonding_kill_list(s->meta.cgroup_bondings, signo, pid_set)) < 0) + if ((q = cgroup_bonding_kill_list(s->meta.cgroup_bondings, signo, false, pid_set)) < 0) if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) r = q; }