chiark / gitweb /
systemctl: provide compatibility implementations for various sysv utilities
[elogind.git] / src / initctl.c
index 9872437aa938855e91bad8fd22fac2ddaf7f529f..56ed5cdf30dee9ed966228f88d5f9dbd8d395d21 100644 (file)
@@ -230,8 +230,10 @@ static void server_done(Server *s) {
         if (s->epoll_fd >= 0)
                 close_nointr_nofail(s->epoll_fd);
 
-        if (s->bus)
-                dbus_connection_unref(s->bus);
+        if (s->bus) {
+               dbus_connection_set_exit_on_disconnect(s->bus, FALSE);
+               dbus_connection_unref(s->bus);
+        }
 }
 
 static int server_init(Server *s, unsigned n_sockets) {
@@ -352,6 +354,10 @@ int main(int argc, char *argv[]) {
         if (server_init(&server, (unsigned) n) < 0)
                 return 2;
 
+        sd_notify(false,
+                  "READY=1\n"
+                  "STATUS=Processing requests...");
+
         for (;;) {
                 struct epoll_event event;
                 int k;
@@ -376,6 +382,9 @@ int main(int argc, char *argv[]) {
         r = 0;
 
 fail:
+        sd_notify(false,
+                  "STATUS=Shutting down...");
+
         server_done(&server);
 
         log_info("systemd-initctl stopped as pid %llu", (unsigned long long) getpid());