From: Timo Sirainen Date: Thu, 16 Jan 2020 12:58:21 +0000 (+0200) Subject: lib-master: Notify master immediately when process can accept more clients X-Git-Tag: 2.3.14.rc1~152 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b95a60b44e361781fe763227fde728ffa0d98e74;p=thirdparty%2Fdovecot%2Fcore.git lib-master: Notify master immediately when process can accept more clients Instead of delaying it for 1 second. Otherwise the master might be complaining about process/client limit being reached or creating more processes unnecessarily. --- diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index 1dfcde0ef2..f86aaa2667 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -1268,10 +1268,20 @@ static void master_service_io_listeners_close(struct master_service *service) static bool master_status_update_is_important(struct master_service *service) { - if (service->master_status.available_count == 0) + if (service->master_status.available_count == 0) { + /* client_limit reached for this process */ return TRUE; - if (!service->initial_status_sent) + } + if (service->last_sent_status_avail_count == 0) { + /* This process can now handle more clients. This is important + to know for master if all the existing processes have + avail_count=0 so it doesn't unnecessarily create more + processes. */ return TRUE; + } + /* The previous check should have triggered also for the initial + status notification. */ + i_assert(service->initial_status_sent); return FALSE; }