Mercurial > dovecot > core-2.2
changeset 680:84e398270f7f HEAD
net_accept() returns now -2 for fatal failures.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 26 Nov 2002 15:27:13 +0200 |
parents | 78966c511e57 |
children | d787d0bc3b58 |
files | src/auth/main.c src/lib/network.c src/lib/network.h src/login/main.c |
diffstat | 4 files changed, 22 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/main.c Tue Nov 26 15:13:20 2002 +0200 +++ b/src/auth/main.c Tue Nov 26 15:27:13 2002 +0200 @@ -31,8 +31,12 @@ int fd; fd = net_accept(listen_fd, NULL, NULL); - if (fd != -1) + if (fd < 0) { + if (fd < -1) + i_fatal("accept() failed: %m"); + } else { (void)login_connection_create(fd); + } } static void main_init(void)
--- a/src/lib/network.c Tue Nov 26 15:13:20 2002 +0200 +++ b/src/lib/network.c Tue Nov 26 15:27:13 2002 +0200 @@ -335,8 +335,13 @@ addrlen = sizeof(so); ret = accept(fd, &so.sa, &addrlen); - if (ret < 0) - return -1; + if (ret < 0) { + if (errno == EBADF || errno == ENOTSOCK || + errno == EOPNOTSUPP || errno == EFAULT || errno == EINVAL) + return -2; + else + return -1; + } if (addr != NULL) sin_get_ip(&so, addr); if (port != NULL) *port = sin_get_port(&so);
--- a/src/lib/network.h Tue Nov 26 15:13:20 2002 +0200 +++ b/src/lib/network.h Tue Nov 26 15:27:13 2002 +0200 @@ -62,7 +62,8 @@ int net_listen(IPADDR *my_ip, unsigned int *port); /* Listen for connections on an UNIX socket */ int net_listen_unix(const char *path); -/* Accept a connection on a socket */ +/* Accept a connection on a socket. Returns -1 for temporary failure, + -2 for fatal failure */ int net_accept(int fd, IPADDR *addr, unsigned int *port); /* Read data from socket, return number of bytes read, -1 = error */
--- a/src/login/main.c Tue Nov 26 15:13:20 2002 +0200 +++ b/src/login/main.c Tue Nov 26 15:27:13 2002 +0200 @@ -75,8 +75,11 @@ int fd; fd = net_accept(listen_fd, &addr, NULL); - if (fd == -1) + if (fd < 0) { + if (fd < -1) + i_fatal("accept() failed: %m"); return; + } if (process_per_connection) main_close_listen(); @@ -92,8 +95,11 @@ int fd, fd_ssl; fd = net_accept(listen_fd, &addr, NULL); - if (fd == -1) + if (fd < 0) { + if (fd < -1) + i_fatal("accept() failed: %m"); return; + } fd_ssl = ssl_proxy_new(fd); if (fd_ssl == -1)