X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fmanager.c;h=524d125bdc8560bfeae9604ad8c05eeb7ae08c2f;hb=582a507f1abdca75abe34945b4bbd5e97e9b45a8;hp=adff54639731d2e3fd7fb0850a1e8324450c47e9;hpb=1e3ad081efda42dd1cc737ce7e98be8889c78340;p=elogind.git diff --git a/src/manager.c b/src/manager.c index adff54639..524d125bd 100644 --- a/src/manager.c +++ b/src/manager.c @@ -83,7 +83,7 @@ static int manager_setup_notify(Manager *m) { zero(sa); sa.sa.sa_family = AF_UNIX; - if (m->running_as == MANAGER_SESSION) + if (getpid() != 1) snprintf(sa.un.sun_path+1, sizeof(sa.un.sun_path)-1, NOTIFY_SOCKET "/%llu", random_ull()); else strncpy(sa.un.sun_path+1, NOTIFY_SOCKET, sizeof(sa.un.sun_path)-1); @@ -1748,7 +1748,7 @@ static int manager_dispatch_sigchld(Manager *m) { (long unsigned) si.si_pid, sigchld_code_to_string(si.si_code), si.si_status, - strna(si.si_code == CLD_EXITED ? exit_status_to_string(si.si_status) : strsignal(si.si_status))); + strna(si.si_code == CLD_EXITED ? exit_status_to_string(si.si_status) : signal_to_string(si.si_status))); if (!u) continue; @@ -1768,6 +1768,8 @@ static int manager_start_target(Manager *m, const char *name, JobMode mode) { dbus_error_init(&error); + log_info("Activating special unit %s", name); + if ((r = manager_add_job_by_name(m, JOB_START, name, mode, true, &error, NULL)) < 0) log_error("Failed to enqueue %s job: %s", name, bus_error(&error, r)); @@ -1795,6 +1797,8 @@ static int manager_process_signal_fd(Manager *m) { return -errno; } + log_debug("Received SIG%s", strna(signal_to_string(sfsi.ssi_signo))); + switch (sfsi.ssi_signo) { case SIGCHLD: @@ -1905,7 +1909,7 @@ static int manager_process_signal_fd(Manager *m) { break; } - log_info("Got unhandled signal <%s>.", strsignal(sfsi.ssi_signo)); + log_warning("Got unhandled signal <%s>.", strna(signal_to_string(sfsi.ssi_signo))); } } } @@ -2275,6 +2279,8 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) { log_debug("Deserializing state..."); + m->deserializing = true; + for (;;) { Unit *u; char name[UNIT_NAME_MAX+2]; @@ -2284,22 +2290,30 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) { if (feof(f)) break; - return -errno; + r = -errno; + goto finish; } char_array_0(name); if ((r = manager_load_unit(m, strstrip(name), NULL, NULL, &u)) < 0) - return r; + goto finish; if ((r = unit_deserialize(u, f, fds)) < 0) - return r; + goto finish; } - if (ferror(f)) - return -EIO; + if (ferror(f)) { + r = -EIO; + goto finish; + } - return 0; + r = 0; + +finish: + m->deserializing = false; + + return r; } int manager_reload(Manager *m) {