]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: Split off master_service_can_idle_die()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 29 Oct 2025 21:14:08 +0000 (23:14 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 31 Oct 2025 10:02:18 +0000 (10:02 +0000)
src/lib-master/master-service.c

index d39b43423ac1c3272ab3d4a983b47edaa74563fd..606f071f8ffdcb4be9b3e6004204219a45af651e 100644 (file)
@@ -99,6 +99,18 @@ log_killed_signal(struct master_service *service, const siginfo_t *si)
        service->killed_signal_logged = TRUE;
 }
 
+static bool master_service_can_idle_die(struct master_service *service)
+{
+       if (service->master_status.available_count !=
+           service->total_available_count)
+               return FALSE;
+
+       if (service->idle_die_callback != NULL &&
+           !service->idle_die_callback())
+               return FALSE;
+       return TRUE;
+}
+
 static void sig_delayed_die(const siginfo_t *si, void *context)
 {
        struct master_service *service = context;
@@ -113,14 +125,7 @@ static void sig_delayed_die(const siginfo_t *si, void *context)
        } else if ((service->flags & MASTER_SERVICE_FLAG_STANDALONE) == 0) {
                /* SIGINT came from master. die only if we're not handling
                   any clients currently. */
-               if (service->master_status.available_count !=
-                   service->total_available_count) {
-                       master_status_send(service, TRUE);
-                       return;
-               }
-
-               if (service->idle_die_callback != NULL &&
-                   !service->idle_die_callback()) {
+               if (!master_service_can_idle_die(service)) {
                        /* we don't want to die - send a notification to master
                           so it doesn't think we're ignoring it completely. */
                        master_status_send(service, TRUE);