chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
systemctl: provide compatibility implementations for various sysv utilities
[elogind.git]
/
src
/
initctl.c
diff --git
a/src/initctl.c
b/src/initctl.c
index 9872437aa938855e91bad8fd22fac2ddaf7f529f..56ed5cdf30dee9ed966228f88d5f9dbd8d395d21 100644
(file)
--- a/
src/initctl.c
+++ b/
src/initctl.c
@@
-230,8
+230,10
@@
static void server_done(Server *s) {
if (s->epoll_fd >= 0)
close_nointr_nofail(s->epoll_fd);
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) {
}
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;
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;
for (;;) {
struct epoll_event event;
int k;
@@
-376,6
+382,9
@@
int main(int argc, char *argv[]) {
r = 0;
fail:
r = 0;
fail:
+ sd_notify(false,
+ "STATUS=Shutting down...");
+
server_done(&server);
log_info("systemd-initctl stopped as pid %llu", (unsigned long long) getpid());
server_done(&server);
log_info("systemd-initctl stopped as pid %llu", (unsigned long long) getpid());