X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=service.c;h=298cc27edb56595ce3ade03d5a34667caeb861fc;hb=b29a8e58fa7c30dfcc4e4b1ccf9f409dc2935f8a;hp=42ce3dcbd744a9b68a987d11782b8e3f955f1ddd;hpb=a0fcc5f6ce46ae69649f42e844249c54aa1e7b2e;p=elogind.git diff --git a/service.c b/service.c index 42ce3dcbd..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;