X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=service.c;h=298cc27edb56595ce3ade03d5a34667caeb861fc;hb=cd1a19e86dacc60930c2bedf02080026706c04b6;hp=84077a19f1ced83a8097f08544a126647fe95448;hpb=3a76266192da84f6f7b84725e7647c82f8407278;p=elogind.git diff --git a/service.c b/service.c index 84077a19f..298cc27ed 100644 --- a/service.c +++ b/service.c @@ -661,6 +661,7 @@ static int service_load_sysv_path(Service *s, const char *path) { /* Special setting for all SysV services */ s->valid_no_process = true; + s->kill_mode = KILL_PROCESS_GROUP; /* Don't timeout special services during boot (like fsck) */ if (s->sysv_runlevels && !chars_intersect("12345", s->sysv_runlevels)) @@ -1413,7 +1414,7 @@ static void service_enter_signal(Service *s, ServiceState state, bool success) { } } - if (sent) { + if (sent && (s->main_pid > 0 || s->control_pid > 0)) { if (s->timeout_usec > 0) if ((r = unit_watch_timer(UNIT(s), s->timeout_usec, &s->timer_watch)) < 0) goto fail; @@ -1805,7 +1806,7 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { * commands attached here, we will start from the first one * again */ if (s->control_command_id >= 0) - unit_serialize_item(u, f, "control-command", mount_exec_command_to_string(s->control_command_id)); + unit_serialize_item(u, f, "control-command", service_exec_command_to_string(s->control_command_id)); if (s->socket_fd >= 0) { int copy; @@ -2253,7 +2254,7 @@ static int service_enumerate(Manager *m) { if ((r = unit_add_dependency(runlevel_target, UNIT_WANTS, service, true)) < 0) goto finish; - if ((r = unit_add_dependency(runlevel_target, UNIT_AFTER, service, true)) < 0) + if ((r = unit_add_dependency(service, UNIT_BEFORE, runlevel_target, true)) < 0) goto finish; } else if (de->d_name[0] == 'K' && @@ -2276,10 +2277,10 @@ static int service_enumerate(Manager *m) { if ((r = manager_load_unit(m, SPECIAL_SHUTDOWN_TARGET, NULL, &shutdown_target)) < 0) goto finish; - if ((r = unit_add_dependency(shutdown_target, UNIT_CONFLICTS, service, true)) < 0) + if ((r = unit_add_dependency(service, UNIT_CONFLICTS, shutdown_target, true)) < 0) goto finish; - if ((r = unit_add_dependency(shutdown_target, UNIT_BEFORE, service, true)) < 0) + if ((r = unit_add_dependency(service, UNIT_BEFORE, shutdown_target, true)) < 0) goto finish; } }