diff options
Diffstat (limited to 'src/progman.c')
-rw-r--r-- | src/progman.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/progman.c b/src/progman.c index 4f63d9a..3bbd8b3 100644 --- a/src/progman.c +++ b/src/progman.c @@ -2364,3 +2364,5 @@ progman_stop_component (struct prog *prog) case status_disabled: - if (!(prog->v.p.comp->flags & CF_DISABLED)) + if (!component_is_active (prog->v.p.comp)) + destroy_prog (&prog); + else if (!(prog->v.p.comp->flags & CF_DISABLED)) { @@ -2372,4 +2374,9 @@ progman_stop_component (struct prog *prog) case status_sleeping: - logmsg (LOG_INFO, _("waking up component `%s'"), prog_tag (prog)); - prog->v.p.failcount = 0; + if (!component_is_active (prog->v.p.comp)) + destroy_prog (&prog); + else + { + logmsg (LOG_INFO, _("waking up component `%s'"), prog_tag (prog)); + prog->v.p.failcount = 0; + } break; @@ -2377,5 +2384,8 @@ progman_stop_component (struct prog *prog) default: - logmsg (LOG_INFO, - _("stopping component `%s': component not started"), - prog_tag (prog)); + if (!component_is_active (prog->v.p.comp)) + destroy_prog (&prog); + else + logmsg (LOG_INFO, + _("stopping component `%s': component not started"), + prog_tag (prog)); } |