Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8071:f39a6be7d42a HEAD
login processes set their fd limit too low, causing "too many open files" errors
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 06 Aug 2008 12:44:14 -0400 |
parents | 7e3590da43a9 |
children | f6cff15160d4 |
files | src/login-common/main.c |
diffstat | 1 files changed, 6 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/login-common/main.c Tue Aug 05 11:24:29 2008 -0400 +++ b/src/login-common/main.c Wed Aug 06 12:44:14 2008 -0400 @@ -252,6 +252,7 @@ static void drop_privileges(void) { const char *value; + unsigned int max_fd_per_conn; if (!is_inetd) i_set_failure_internal(); @@ -281,10 +282,14 @@ value = getenv("MAX_CONNECTIONS"); max_connections = value == NULL ? 1 : strtoul(value, NULL, 10); + /* max fds: connection itself, SSL socketpair, login proxy socketpair */ + max_fd_per_conn = 1 + (ssl_initialized ? 2 : 0) + 2; + /* set the number of fds we want to use. it may get increased or decreased. leave a couple of extra fds for auth sockets and such */ restrict_fd_limit(LOGIN_MASTER_SOCKET_FD + 16 + - listen_count + ssl_listen_count + max_connections); + listen_count + ssl_listen_count + + max_connections * max_fd_per_conn); /* Refuse to run as root - we should never need it and it's dangerous with SSL. */