1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-23 21:35:11 +03:00

initctl: don't use dbus connection after PID 1 got respawned

After reexec PID 1 our bus connection is invalidated. Hence don't try to
reuse it, just terminate so that when we are spawned the next time we
just get a new one.

Spotted by Marti Raudsepp.
This commit is contained in:
Lennart Poettering 2011-11-01 18:18:17 +01:00
parent 7670e5a2aa
commit f632a6634d

View File

@ -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;