From: Timo Sirainen Date: Wed, 29 Oct 2025 21:14:08 +0000 (+0200) Subject: lib-master: Split off master_service_can_idle_die() X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2cfedaaab6ba9c98522ab0d47eba48361b2b791d;p=thirdparty%2Fdovecot%2Fcore.git lib-master: Split off master_service_can_idle_die() --- diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index d39b43423a..606f071f8f 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -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);