X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fsocket.c;h=468d1018c1f1d61e2c32c223647f35b8044fcdd4;hp=3a7aa94036d6123ab16c9cc7306f5af71b6a08f4;hb=f975e971accc4d50c73ae53167db3df7a7099cf2;hpb=3611581ebdabbe3a1d6a9b5310a0b59792279d7d diff --git a/src/socket.c b/src/socket.c index 3a7aa9403..468d1018c 100644 --- a/src/socket.c +++ b/src/socket.c @@ -892,11 +892,14 @@ static int socket_open_fds(Socket *s) { if ((r = socket_instantiate_service(s)) < 0) return r; - if (s->service && s->service->exec_command[SERVICE_EXEC_START]) - if ((r = label_get_socket_label_from_exe(s->service->exec_command[SERVICE_EXEC_START]->path, &label)) < 0) { + if (s->service && s->service->exec_command[SERVICE_EXEC_START]) { + r = label_get_create_label_from_exe(s->service->exec_command[SERVICE_EXEC_START]->path, &label); + + if (r < 0) { if (r != -EPERM) return r; } + } know_label = true; } @@ -2022,12 +2025,12 @@ static int socket_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError if (who == KILL_MAIN) { dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "Socket units have no main processes"); - return -EINVAL; + return -ESRCH; } if (s->control_pid <= 0 && who == KILL_CONTROL) { dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "No control process to kill"); - return -ENOENT; + return -ESRCH; } if (who == KILL_CONTROL || who == KILL_ALL) @@ -2088,6 +2091,10 @@ DEFINE_STRING_TABLE_LOOKUP(socket_exec_command, SocketExecCommand); const UnitVTable socket_vtable = { .suffix = ".socket", + .sections = + "Unit\0" + "Socket\0" + "Install\0", .init = socket_init, .done = socket_done,