X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fservice.c;h=bf2e0a9d98f99979b8881f6209a20f3727635b72;hb=b8b5e648cacc8d73c55fdffbb3466ecd8146131a;hp=8b5c0b07c4d29efe70b639936389d7b77a2dbdbb;hpb=7f110ff9b8828b477e87de7b28c708cf69a3d008;p=elogind.git diff --git a/src/service.c b/src/service.c index 8b5c0b07c..bf2e0a9d9 100644 --- a/src/service.c +++ b/src/service.c @@ -2208,9 +2208,12 @@ static void service_enter_restart(Service *s) { goto fail; } - service_enter_dead(s, SERVICE_SUCCESS, false); - - if ((r = manager_add_job(UNIT(s)->manager, JOB_START, UNIT(s), JOB_FAIL, false, &error, NULL)) < 0) + /* Any units that are bound to this service must also be + * restarted. We use JOB_RESTART (instead of the more obvious + * JOB_START) here so that those dependency jobs will be added + * as well. */ + r = manager_add_job(UNIT(s)->manager, JOB_RESTART, UNIT(s), JOB_FAIL, false, &error, NULL); + if (r < 0) goto fail; log_debug("%s scheduled restart job.", UNIT(s)->id);