/* 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_STOP:
return
- b == UNIT_INACTIVE;
+ b == UNIT_INACTIVE ||
+ b == UNIT_INACTIVE_MAINTENANCE;
case JOB_VERIFY_ACTIVE:
return
case JOB_RESTART: {
UnitActiveState t = unit_active_state(j->unit);
- if (t == UNIT_INACTIVE || t == UNIT_ACTIVATING) {
+ if (t == UNIT_INACTIVE || t == UNIT_INACTIVE_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_INACTIVE_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);