]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm stop: Try to wait shorter time between master process checks
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 30 May 2023 10:36:47 +0000 (13:36 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Thu, 1 Jun 2023 06:09:20 +0000 (06:09 +0000)
Start from 1 ms timeout, but double it until 256 ms.

src/doveadm/doveadm-master.c

index 1ad9fe9457dccca4b53a4edc2e1eced550a6685e..d7674979fe87c1b03338ed9329f83f09a2e9de23 100644 (file)
@@ -70,14 +70,16 @@ void doveadm_master_send_signal(int signo, struct event *event)
 
        if (signo == SIGTERM) {
                /* wait for a while for the process to die */
-               i_sleep_msecs(1);
+               unsigned int sleep_msecs = 1;
                for (i = 0; i < 30; i++) {
+                       i_sleep_msecs(sleep_msecs);
                        if (kill(pid, 0) < 0) {
                                if (errno != ESRCH)
                                        e_error(event, "kill() failed: %m");
                                break;
                        }
-                       i_sleep_msecs(100);
+                       if (sleep_msecs < 256)
+                               sleep_msecs *= 2;
                }
        }
 }