X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fsocket.c;h=ea24f4b4433658aabc39c9e5d3b89ba6bfd74c7f;hb=62bca2c657bf95fd1f69935eef09915afa5c69d9;hp=5b24b3422b8e9a2de77344e4d14131c17d980798;hpb=b30e2f4c18ad81b04e4314fd191a5d458553773c;p=elogind.git diff --git a/src/core/socket.c b/src/core/socket.c index 5b24b3422..ea24f4b44 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -6,16 +6,16 @@ Copyright 2010 Lennart Poettering systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. systemd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . ***/ @@ -37,6 +37,7 @@ #include "load-fragment.h" #include "strv.h" #include "mkdir.h" +#include "path-util.h" #include "unit-name.h" #include "dbus-socket.h" #include "missing.h" @@ -164,7 +165,7 @@ static int socket_instantiate_service(Socket *s) { return r; #ifdef HAVE_SYSV_COMPAT - if (SERVICE(u)->sysv_path) { + if (SERVICE(u)->is_sysv) { log_error("Using SysV services for socket activation is not supported. Refusing."); return -ENOENT; } @@ -760,9 +761,10 @@ static int fifo_address_create( assert(path); assert(_fd); - mkdir_parents(path, directory_mode); + mkdir_parents_label(path, directory_mode); - if ((r = label_fifofile_set(path)) < 0) + r = label_context_set(path, S_IFIFO); + if (r < 0) goto fail; /* Enforce the right access mode for the fifo */ @@ -784,7 +786,7 @@ static int fifo_address_create( goto fail; } - label_file_clear(); + label_context_clear(); if (fstat(fd, &st) < 0) { r = -errno; @@ -804,7 +806,7 @@ static int fifo_address_create( return 0; fail: - label_file_clear(); + label_context_clear(); if (fd >= 0) close_nointr_nofail(fd); @@ -1150,6 +1152,9 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) { UNIT(s)->manager->confirm_spawn, UNIT(s)->cgroup_bondings, UNIT(s)->cgroup_attributes, + NULL, + UNIT(s)->id, + NULL, &pid); strv_free(argv); @@ -1240,7 +1245,8 @@ static void socket_enter_signal(Socket *s, SocketState state, SocketResult f) { if ((r = set_put(pid_set, LONG_TO_PTR(s->control_pid))) < 0) goto fail; - if ((r = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, sig, true, pid_set)) < 0) { + r = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, sig, true, false, pid_set, NULL); + if (r < 0) { if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) log_warning("Failed to kill control group: %s", strerror(-r)); } else if (r > 0) @@ -1570,7 +1576,7 @@ static int socket_start(Unit *u) { } #ifdef HAVE_SYSV_COMPAT - if (service->sysv_path) { + if (service->is_sysv) { log_error("Using SysV services for socket activation is not supported. Refusing."); return -ENOENT; } @@ -2127,7 +2133,8 @@ static int socket_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError goto finish; } - if ((q = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, signo, false, pid_set)) < 0) + q = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, signo, false, false, pid_set, NULL); + if (q < 0) if (q != -EAGAIN && q != -ESRCH && q != -ENOENT) r = q; } @@ -2214,5 +2221,23 @@ const UnitVTable socket_vtable = { .bus_interface = "org.freedesktop.systemd1.Socket", .bus_message_handler = bus_socket_message_handler, - .bus_invalidating_properties = bus_socket_invalidating_properties + .bus_invalidating_properties = bus_socket_invalidating_properties, + + .status_message_formats = { + /*.starting_stopping = { + [0] = "Starting socket %s...", + [1] = "Stopping socket %s...", + },*/ + .finished_start_job = { + [JOB_DONE] = "Listening on %s.", + [JOB_FAILED] = "Failed to listen on %s.", + [JOB_DEPENDENCY] = "Dependency failed for %s.", + [JOB_TIMEOUT] = "Timed out starting %s.", + }, + .finished_stop_job = { + [JOB_DONE] = "Closed %s.", + [JOB_FAILED] = "Failed stopping %s.", + [JOB_TIMEOUT] = "Timed out stopping %s.", + }, + }, };