If a service stops, and has a soft dependency from another service,
don't break the dependency if the service is waiting_on this one - in
that case we want to restart.
force_stop = false;
- // If we are a soft dependency of another target, break the acquisition from that target now:
+ // If we are a soft dependency of another target, break the acquisition from that target now,
+ // so that we don't re-start:
for (auto & dependent : dependents) {
if (dependent->dep_type != dependency_type::REGULAR) {
- if (dependent->holding_acq) {
+ if (dependent->holding_acq && ! dependent->waiting_on) {
dependent->holding_acq = false;
release();
}