X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fservice.c;h=429b53d4f880b735836afaef02f79d23600323e9;hp=49bdae7258c9819b8d55940d006a36ebd5b629b0;hb=d686d8a97bd7945af0a61504392d01a3167b576f;hpb=799fd0fd23028a58e1f605c6b0d9aaab65b4fb1f diff --git a/src/service.c b/src/service.c index 49bdae725..429b53d4f 100644 --- a/src/service.c +++ b/src/service.c @@ -1014,14 +1014,14 @@ static int service_add_default_dependencies(Service *s) { if ((r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_BASIC_TARGET, NULL, true)) < 0) return r; - } else if (s->meta.manager->running_as == MANAGER_SESSION) { + } else if (s->meta.manager->running_as == MANAGER_USER) { if ((r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SOCKETS_TARGET, NULL, true)) < 0) return r; } /* Second, activate normal shutdown */ - return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTED_BY, SPECIAL_SHUTDOWN_TARGET, NULL, true); + return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true); } static int service_load(Unit *u) { @@ -1055,7 +1055,7 @@ static int service_load(Unit *u) { if ((r = unit_add_exec_dependencies(u, &s->exec_context)) < 0) return r; - if ((r = unit_add_default_cgroup(u)) < 0) + if ((r = unit_add_default_cgroups(u)) < 0) return r; #ifdef HAVE_SYSV_COMPAT @@ -1609,16 +1609,6 @@ static int service_spawn( goto fail; } -#ifdef HAVE_SYSV_COMPAT - /* Make sure we set TERM=linux for SysV scripts, since some - * require it to be set from the kernel */ - if (s->sysv_path && !strv_env_get(s->meta.manager->environment, "TERM")) - if (!(our_env[n_env++] = strdup("TERM=linux"))) { - r = -ENOMEM; - goto fail; - } -#endif - if (!(final_env = strv_env_merge(2, s->meta.manager->environment, our_env, @@ -2039,6 +2029,13 @@ static void service_enter_restart(Service *s) { assert(s); dbus_error_init(&error); + if (s->meta.job) { + log_info("Job pending for unit, delaying automatic restart."); + + if ((r = unit_watch_timer(UNIT(s), s->restart_usec, &s->timer_watch)) < 0) + goto fail; + } + service_enter_dead(s, true, false); if ((r = manager_add_job(s->meta.manager, JOB_START, UNIT(s), JOB_FAIL, false, &error, NULL)) < 0) @@ -3017,7 +3014,7 @@ static int service_enumerate(Manager *m) { if (service->meta.fragment_path) continue; - if ((r = unit_add_two_dependencies_by_name_inverse(service, UNIT_AFTER, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true)) < 0) + if ((r = unit_add_two_dependencies_by_name(service, UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true)) < 0) goto finish; }