X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Finitctl.c;h=7b478a75d577fc7d308308baeca2e903b2e1a59b;hb=a9c501a5902a64d4ec21cf0e87d16ec8c0c1e169;hp=7241acb8dfe59771c9d5c930eeb1aeaecbaccc2e;hpb=a822056bca49a63cb832230af22f789c5ab5b856;p=elogind.git diff --git a/src/initctl.c b/src/initctl.c index 7241acb8d..7b478a75d 100644 --- a/src/initctl.c +++ b/src/initctl.c @@ -1,4 +1,4 @@ -/*-*- Mode: C; c-basic-offset: 8 -*-*/ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ /*** This file is part of systemd. @@ -119,7 +119,7 @@ static void change_runlevel(Server *s, int runlevel) { DBUS_TYPE_STRING, &target, DBUS_TYPE_STRING, &replace, DBUS_TYPE_INVALID)) { - log_error("Could not attach target and flag information to signal message."); + log_error("Could not attach target and flag information to message."); goto finish; } @@ -232,7 +232,7 @@ static void server_done(Server *s) { close_nointr_nofail(s->epoll_fd); if (s->bus) { - dbus_connection_set_exit_on_disconnect(s->bus, FALSE); + dbus_connection_close(s->bus); dbus_connection_unref(s->bus); } } @@ -297,14 +297,10 @@ static int server_init(Server *s, unsigned n_sockets) { s->n_fifos ++; } - if (!(s->bus = dbus_connection_open("unix:abstract=/org/freedesktop/systemd1/private", &error))) { + if (bus_connect(DBUS_BUS_SYSTEM, &s->bus, NULL, &error) < 0) { log_error("Failed to get D-Bus connection: %s", error.message); goto fail; } - if ((r = bus_check_peercred(s->bus)) < 0) { - log_error("Bus connection failed peer credential check: %s", strerror(-r)); - goto fail; - } return 0; @@ -353,8 +349,7 @@ int main(int argc, char *argv[]) { log_set_target(LOG_TARGET_SYSLOG_OR_KMSG); log_parse_environment(); - - log_info("systemd-initctl running as pid %lu", (unsigned long) getpid()); + log_open(); if ((n = sd_listen_fds(true)) < 0) { log_error("Failed to read listening file descriptors from environment: %s", strerror(-r)); @@ -369,6 +364,8 @@ int main(int argc, char *argv[]) { if (server_init(&server, (unsigned) n) < 0) return 2; + log_debug("systemd-initctl running as pid %lu", (unsigned long) getpid()); + sd_notify(false, "READY=1\n" "STATUS=Processing requests..."); @@ -391,19 +388,20 @@ int main(int argc, char *argv[]) { if (k <= 0) break; - if ((k = process_event(&server, &event)) < 0) + if (process_event(&server, &event) < 0) goto fail; } + r = 0; + log_debug("systemd-initctl stopped as pid %lu", (unsigned long) getpid()); + fail: sd_notify(false, "STATUS=Shutting down..."); server_done(&server); - log_info("systemd-initctl stopped as pid %lu", (unsigned long) getpid()); - dbus_shutdown(); return r;