Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8635:c8f619c13d07 HEAD
login processes: Tell ioloop the maximum number of fds we can use.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 15 Jan 2009 16:22:04 -0500 |
parents | 86c28d14ddeb |
children | 11e18a303661 |
files | src/login-common/main.c |
diffstat | 1 files changed, 7 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/login-common/main.c Thu Jan 15 16:20:09 2009 -0500 +++ b/src/login-common/main.c Thu Jan 15 16:22:04 2009 -0500 @@ -252,7 +252,7 @@ clients_notify_auth_connected(); } -static void drop_privileges(void) +static void drop_privileges(unsigned int *max_fds_r) { const char *value; @@ -287,9 +287,9 @@ /* 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. normal connections each use one fd, but SSL connections use two */ - restrict_fd_limit(LOGIN_MASTER_SOCKET_FD + 16 + - listen_count + ssl_listen_count + - max_connections*2); + *max_fds_r = LOGIN_MASTER_SOCKET_FD + 16 + + listen_count + ssl_listen_count + max_connections*2; + restrict_fd_limit(*max_fds_r); /* Refuse to run as root - we should never need it and it's dangerous with SSL. */ @@ -393,7 +393,7 @@ { const char *group_name; struct ip_addr remote_ip, local_ip; - unsigned int remote_port, local_port; + unsigned int remote_port, local_port, max_fds; struct ssl_proxy *proxy = NULL; struct client *client; int i, fd = -1, master_fd = -1; @@ -442,10 +442,11 @@ master_fd = master_connect(group_name); } - drop_privileges(); + drop_privileges(&max_fds); process_title_init(argv, envp); ioloop = io_loop_create(); + io_loop_set_max_fd_count(ioloop, max_fds); main_init(); if (is_inetd) {