]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
master: Increased listen backlog for services without many processes.
authorTimo Sirainen <tss@iki.fi>
Sat, 27 Mar 2010 04:54:51 +0000 (06:54 +0200)
committerTimo Sirainen <tss@iki.fi>
Sat, 27 Mar 2010 04:54:51 +0000 (06:54 +0200)
--HG--
branch : HEAD

src/master/service-listen.c

index c773b3ba2da2166d59b397877f5611b90235f266..11607ce319d34933a6853b15482efaaa9a21cb1d 100644 (file)
 #include <fcntl.h>
 #include <sys/stat.h>
 
+#define MAX_BACKLOG 128
+
 static int service_unix_listener_listen(struct service_listener *l)
 {
         struct service *service = l->service;
        const struct file_listener_settings *set = l->set.fileset.set;
        mode_t old_umask;
+       unsigned int backlog;
        int fd, i;
 
        old_umask = umask((set->mode ^ 0777) & 0777);
        for (i = 0;; i++) {
-               fd = net_listen_unix(set->path, service->process_limit);
+               backlog = service->process_limit * service->client_limit;
+               if (backlog > MAX_BACKLOG)
+                       backlog = MAX_BACKLOG;
+               fd = net_listen_unix(set->path, backlog);
                if (fd != -1)
                        break;