From: Timo Sirainen Date: Sat, 27 Mar 2010 04:54:51 +0000 (+0200) Subject: master: Increased listen backlog for services without many processes. X-Git-Tag: 2.0.beta5~261 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=31105f2fa51d648c07f85585452352aa83b6244c;p=thirdparty%2Fdovecot%2Fcore.git master: Increased listen backlog for services without many processes. --HG-- branch : HEAD --- diff --git a/src/master/service-listen.c b/src/master/service-listen.c index c773b3ba2d..11607ce319 100644 --- a/src/master/service-listen.c +++ b/src/master/service-listen.c @@ -12,16 +12,22 @@ #include #include +#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;