Make sure listeners are notified of start cancellation.
authorDavin McCall <davmac@davmac.org>
Mon, 19 Mar 2018 22:45:17 +0000 (22:45 +0000)
committerDavin McCall <davmac@davmac.org>
Mon, 19 Mar 2018 22:45:17 +0000 (22:45 +0000)
Start cancellation was only working for process-based services.

src/baseproc-service.cc
src/service.cc

index 7f363a57c1fe85efe18674ebad532e9f0ca7faac..61c827067236b3bc9d4f378c72f17a0ba3c04f2a 100644 (file)
@@ -263,6 +263,7 @@ bool base_process_service::interrupt_start() noexcept
     else {
         log(loglevel_t::WARN, "Interrupting start of service ", get_name(), " with pid ", pid, " (with SIGINT).");
         kill_pg(SIGINT);
+
         if (stop_timeout != time_val(0,0)) {
             restart_timer.arm_timer_rel(event_loop, stop_timeout);
             stop_timer_armed = true;
@@ -271,8 +272,8 @@ bool base_process_service::interrupt_start() noexcept
             restart_timer.stop_timer(event_loop);
             stop_timer_armed = false;
         }
+
         set_state(service_state_t::STOPPING);
-        notify_listeners(service_event_t::STARTCANCELLED);
         return false;
     }
 }
index bfa59245ab5eccda255417061824ce3866995702..bf744368fa49bd7f0c0f2fc1bd2c1d33f598fcf6 100644 (file)
@@ -470,6 +470,7 @@ void service_record::do_stop() noexcept
 
                 if (! interrupt_start()) {
                     // Now wait for service startup to actually end; we don't need to handle it here.
+                    notify_listeners(service_event_t::STARTCANCELLED);
                     return;
                 }
             }