diff options
Diffstat (limited to 'src/microhttpd/daemon.c')
-rw-r--r-- | src/microhttpd/daemon.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c index be7335be..9d5b4e1a 100644 --- a/src/microhttpd/daemon.c +++ b/src/microhttpd/daemon.c | |||
@@ -64,8 +64,8 @@ | |||
64 | #include <process.h> | 64 | #include <process.h> |
65 | #endif | 65 | #endif |
66 | 66 | ||
67 | #ifndef HAVE_ACCEPT4 | 67 | #if HAVE_ACCEPT4+0 != 0 && (defined(HAVE_SOCK_NONBLOCK) || (SOCK_CLOEXEC+0 != 0)) |
68 | #define HAVE_ACCEPT4 0 | 68 | #define USE_ACCEPT4 1 |
69 | #endif | 69 | #endif |
70 | 70 | ||
71 | /** | 71 | /** |
@@ -1962,12 +1962,9 @@ MHD_accept_connection (struct MHD_Daemon *daemon) | |||
1962 | socklen_t addrlen; | 1962 | socklen_t addrlen; |
1963 | MHD_socket s; | 1963 | MHD_socket s; |
1964 | MHD_socket fd; | 1964 | MHD_socket fd; |
1965 | #ifdef USE_ACCEPT4 | ||
1965 | int nonblock; | 1966 | int nonblock; |
1966 | 1967 | ||
1967 | addrlen = sizeof (addrstorage); | ||
1968 | memset (addr, 0, sizeof (addrstorage)); | ||
1969 | if (MHD_INVALID_SOCKET == (fd = daemon->socket_fd)) | ||
1970 | return MHD_NO; | ||
1971 | #ifdef HAVE_SOCK_NONBLOCK | 1968 | #ifdef HAVE_SOCK_NONBLOCK |
1972 | nonblock = SOCK_NONBLOCK; | 1969 | nonblock = SOCK_NONBLOCK; |
1973 | #else | 1970 | #else |
@@ -1977,11 +1974,17 @@ MHD_accept_connection (struct MHD_Daemon *daemon) | |||
1977 | if (0 == (daemon->options & MHD_USE_SSL)) | 1974 | if (0 == (daemon->options & MHD_USE_SSL)) |
1978 | nonblock = 0; | 1975 | nonblock = 0; |
1979 | #endif | 1976 | #endif |
1980 | #if HAVE_ACCEPT4 | 1977 | #endif /* USE_ACCEPT4 */ |
1978 | |||
1979 | addrlen = sizeof (addrstorage); | ||
1980 | memset (addr, 0, sizeof (addrstorage)); | ||
1981 | if (MHD_INVALID_SOCKET == (fd = daemon->socket_fd)) | ||
1982 | return MHD_NO; | ||
1983 | #ifdef USE_ACCEPT4 | ||
1981 | s = accept4 (fd, addr, &addrlen, SOCK_CLOEXEC | nonblock); | 1984 | s = accept4 (fd, addr, &addrlen, SOCK_CLOEXEC | nonblock); |
1982 | #else | 1985 | #else /* ! USE_ACCEPT4 */ |
1983 | s = accept (fd, addr, &addrlen); | 1986 | s = accept (fd, addr, &addrlen); |
1984 | #endif | 1987 | #endif /* ! USE_ACCEPT4 */ |
1985 | if ((MHD_INVALID_SOCKET == s) || (addrlen <= 0)) | 1988 | if ((MHD_INVALID_SOCKET == s) || (addrlen <= 0)) |
1986 | { | 1989 | { |
1987 | #ifdef HAVE_MESSAGES | 1990 | #ifdef HAVE_MESSAGES |
@@ -2003,7 +2006,7 @@ MHD_accept_connection (struct MHD_Daemon *daemon) | |||
2003 | } | 2006 | } |
2004 | return MHD_NO; | 2007 | return MHD_NO; |
2005 | } | 2008 | } |
2006 | #if !defined(HAVE_ACCEPT4) || HAVE_ACCEPT4+0 == 0 || !defined(HAVE_SOCK_NONBLOCK) || SOCK_CLOEXEC+0 == 0 | 2009 | #if !defined(USE_ACCEPT4) || !defined(HAVE_SOCK_NONBLOCK) || SOCK_CLOEXEC+0 == 0 |
2007 | make_nonblocking_noninheritable (daemon, s); | 2010 | make_nonblocking_noninheritable (daemon, s); |
2008 | #endif | 2011 | #endif |
2009 | #ifdef HAVE_MESSAGES | 2012 | #ifdef HAVE_MESSAGES |