X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fmanager.c;h=8d016b9f5de405bb83e53b97a7f8a54da4d7054b;hb=55096547212928b0ba83fca2595cae0d66d3c0b0;hp=9cbf9c87484783ba87eb92e2cff4d0d9c42c8282;hpb=398ef8ba0266cca453d90a90b3a2aa1caa44189f;p=elogind.git diff --git a/src/manager.c b/src/manager.c index 9cbf9c874..8d016b9f5 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); @@ -443,7 +443,6 @@ void manager_free(Manager *m) { lookup_paths_free(&m->lookup_paths); strv_free(m->environment); - free(m->cgroup_controller); free(m->cgroup_hierarchy); free(m->cgroup_mount_point); @@ -1273,7 +1272,7 @@ static int transaction_add_job_and_dependencies( assert(unit); if (unit->meta.load_state != UNIT_LOADED) { - dbus_set_error(e, BUS_ERROR_LOAD_FAILED, "Unit %s failed to load.", unit->meta.id); + dbus_set_error(e, BUS_ERROR_LOAD_FAILED, "Unit %s failed to load. See logs for details.", unit->meta.id); return -EINVAL; } @@ -1748,7 +1747,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 +1767,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 +1796,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 +1908,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 +2278,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 +2289,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) {