From: Lennart Poettering Date: Wed, 20 Jan 2010 18:20:15 +0000 (+0100) Subject: recursively kill jobs from transaction list X-Git-Tag: v1~833 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=1e198baf11cd0c34ef0c6f326c8a75b046552a33 recursively kill jobs from transaction list --- diff --git a/manager.c b/manager.c index 456eb8db1..41124fff8 100644 --- a/manager.c +++ b/manager.c @@ -487,8 +487,17 @@ void manager_transaction_delete_job(Manager *m, Job *j) { while (j->subject_list) job_dependency_free(j->subject_list); - while (j->object_list) + + while (j->object_list) { + Job *other = j->object_list->matters ? j->object_list->subject : NULL; + job_dependency_free(j->object_list); + + if (other) { + log_debug("Deleting job %s, as dependency of job %s", name_id(j->name), name_id(other->name)); + manager_transaction_delete_job(m, other); + } + } } static int transaction_add_job_and_dependencies(Manager *m, JobType type, Name *name, Job *by, bool matters, bool force, Job **_ret) {