When stopping dependents, also release waits_for/soft dependencies.
[oweals/dinit.git] / src / service.cc
index 5195c56599c8248d0db07f695a36cc839c54a2af..bfa59245ab5eccda255417061824ce3866995702 100644 (file)
@@ -536,6 +536,17 @@ bool service_record::stop_dependents() noexcept
             dept->get_from()->prop_stop = true;
             services->add_prop_queue(dept->get_from());
         }
+        else {
+            // waits-for or soft dependency:
+            if (dept->waiting_on) {
+                dept->waiting_on = false;
+                dept->get_from()->dependency_started();
+            }
+            if (dept->holding_acq) {
+                dept->holding_acq = false;
+                release();
+            }
+        }
     }
 
     return all_deps_stopped;