aboutsummaryrefslogtreecommitdiff
path: root/src/microhttpd/daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/daemon.c')
-rw-r--r--src/microhttpd/daemon.c23
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