diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-11-08 19:44:16 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-11-08 19:44:16 +0100 |
commit | 1e2579fdeb7608719cb28da0b5061f48ba0efc34 (patch) | |
tree | 83352697294bd24015efdce199e8fbc3d2788f6e /src/initctl.c | |
parent | a40593a0d0d740efa387e35411e1e456a6c5aba7 (diff) | |
parent | 4cbd9ecf45f64c3a9acc99d473fbf3be3687ae24 (diff) |
Merge branch 'master' into journal
Diffstat (limited to 'src/initctl.c')
-rw-r--r-- | src/initctl.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/initctl.c b/src/initctl.c index eaa717ad91..097c85fdd4 100644 --- a/src/initctl.c +++ b/src/initctl.c @@ -56,6 +56,8 @@ typedef struct Server { unsigned n_fifos; DBusConnection *bus; + + bool quit; } Server; struct Fifo { @@ -174,6 +176,13 @@ static void request_process(Server *s, const struct init_request *req) { case 'U': if (kill(1, SIGTERM) < 0) log_error("kill() failed: %m"); + + /* The bus connection will be + * terminated if PID 1 is reexecuted, + * hence let's just exit here, and + * rely on that we'll be restarted on + * the next request */ + s->quit = true; break; case 'q': @@ -404,7 +413,7 @@ int main(int argc, char *argv[]) { "READY=1\n" "STATUS=Processing requests..."); - for (;;) { + while (!server.quit) { struct epoll_event event; int k; |