]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
anvil: Stay alive until it has no more clients.
authorTimo Sirainen <tss@iki.fi>
Thu, 12 Nov 2009 23:37:57 +0000 (18:37 -0500)
committerTimo Sirainen <tss@iki.fi>
Thu, 12 Nov 2009 23:37:57 +0000 (18:37 -0500)
--HG--
branch : HEAD

src/anvil/main.c
src/master/service-process.c

index e09a678c8171b9ab31ead1f8114772c836acdaeb..f6021b25c47d9327d5b79b6c258749747a1cb70d 100644 (file)
@@ -25,7 +25,6 @@ int main(int argc, char *argv[])
        if (master_getopt(master_service) > 0)
                return FATAL_DEFAULT;
 
-       master_service_set_die_with_master(master_service, TRUE);
        master_service_init_log(master_service, "anvil: ");
        master_service_init_finish(master_service);
        connect_limit = connect_limit_init();
index aff94e1b59ba0e7531d7133ba234daec75cbd4f4..8a3533e9659afd6c863e97ab7e4b3db7cab1f29d 100644 (file)
@@ -100,8 +100,18 @@ service_dup_fds(struct service *service)
                dup2_append(&dups, service->login_notify_fd,
                            MASTER_LOGIN_NOTIFY_FD);
        }
-       dup2_append(&dups, service_anvil_global->blocking_fd[1],
-                   MASTER_ANVIL_FD);
+       switch (service->type) {
+       case SERVICE_TYPE_LOG:
+       case SERVICE_TYPE_ANVIL:
+       case SERVICE_TYPE_CONFIG:
+               dup2_append(&dups, null_fd, MASTER_ANVIL_FD);
+               break;
+       case SERVICE_TYPE_UNKNOWN:
+       case SERVICE_TYPE_LOGIN:
+               dup2_append(&dups, service_anvil_global->blocking_fd[1],
+                           MASTER_ANVIL_FD);
+               break;
+       }
        dup2_append(&dups, service->status_fd[1], MASTER_STATUS_FD);
 
        if (service->type != SERVICE_TYPE_LOG) {