/* Detach from next 'bigger' objects */
if (j->installed) {
- bus_job_send_removed_signal(j);
+ bus_job_send_removed_signal(j, !j->failed);
if (j->unit->meta.job == j) {
j->unit->meta.job = NULL;
case JOB_START:
return
b == UNIT_ACTIVE ||
- b == UNIT_ACTIVE_RELOADING;
+ b == UNIT_RELOADING;
case JOB_STOP:
return
- b == UNIT_INACTIVE;
+ b == UNIT_INACTIVE ||
+ b == UNIT_MAINTENANCE;
case JOB_VERIFY_ACTIVE:
return
b == UNIT_ACTIVE ||
- b == UNIT_ACTIVE_RELOADING;
+ b == UNIT_RELOADING;
case JOB_RELOAD:
return
- b == UNIT_ACTIVE_RELOADING;
+ b == UNIT_RELOADING;
case JOB_RELOAD_OR_START:
return
b == UNIT_ACTIVATING ||
- b == UNIT_ACTIVE_RELOADING;
+ b == UNIT_RELOADING;
case JOB_RESTART:
return
case JOB_RESTART: {
UnitActiveState t = unit_active_state(j->unit);
- if (t == UNIT_INACTIVE || t == UNIT_ACTIVATING) {
+ if (t == UNIT_INACTIVE || t == UNIT_MAINTENANCE || t == UNIT_ACTIVATING) {
j->type = JOB_START;
r = unit_start(j->unit);
} else
case JOB_TRY_RESTART: {
UnitActiveState t = unit_active_state(j->unit);
- if (t == UNIT_INACTIVE || t == UNIT_DEACTIVATING)
+ if (t == UNIT_INACTIVE || t == UNIT_MAINTENANCE || t == UNIT_DEACTIVATING)
r = -ENOEXEC;
else if (t == UNIT_ACTIVATING) {
j->type = JOB_START;
return 0;
}
+ j->failed = !success;
u = j->unit;
t = j->type;
job_free(j);