]> err.no Git - systemd/commitdiff
recursively kill jobs from transaction list
authorLennart Poettering <lennart@poettering.net>
Wed, 20 Jan 2010 18:20:15 +0000 (19:20 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 20 Jan 2010 18:20:15 +0000 (19:20 +0100)
manager.c

index 456eb8db1cc5ce703b8d975c143d2b3c90cc9acb..41124fff8972999aef1b4c580afd238037cac51a 100644 (file)
--- 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) {