service: handle properly if a dbus process terminates before acquiring the dbus name

This commit is contained in:
Lennart Poettering 2010-06-04 21:23:00 +02:00
parent b410e6b951
commit c4653a4dfe

View File

@ -1963,14 +1963,18 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
break;
case SERVICE_START:
assert(s->type == SERVICE_FINISH);
if (s->type == SERVICE_FINISH) {
/* This was our main goal, so let's go on */
if (success)
service_enter_start_post(s);
else
service_enter_signal(s, SERVICE_FINAL_SIGTERM, false);
break;
} else {
assert(s->type == SERVICE_DBUS);
/* This was our main goal, so let's go on */
if (success)
service_enter_start_post(s);
else
service_enter_signal(s, SERVICE_FINAL_SIGTERM, false);
break;
/* Fall through */
}
case SERVICE_RUNNING:
service_enter_running(s, success);