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:
parent
7670e5a2aa
commit
f632a6634d
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user