commit b1fff186c5cc039a86febe7d2fa7e24c61b68c60
parent 5d28b72d6991416cb954a0b7d077565f3158810b
Author: Kolja Nowak <Kolja.Nowak@devolo.de>
Date: Wed, 18 May 2022 10:19:31 +0300
I'm trying to use libmicrohttpd on a platform where fcntl(fd, O_NONBLOCK)
doesn't work for sockets. This shouldn't be a problem, as far as I understand,
except in epoll mode, which I'm not using, because epoll() isn't available either.
However, there is a check in daemon.c:internal_add_connection(),
the purpose of which seems to be to prevent using a blocking socket
in epoll mode. At least that's what the debug message says. The code
however does the opposite, it prevents the use of a blocking socket
if epoll mode is *not* used. This was probably never noticed because
platforms without non-blocking sockets are rare.
Please consider applying the following simple fix:
Diffstat:
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
@@ -2985,7 +2985,7 @@ internal_add_connection (struct MHD_Daemon *daemon,
return MHD_NO;
}
- if ( (0 == (daemon->options & MHD_USE_EPOLL)) &&
+ if ( (0 != (daemon->options & MHD_USE_EPOLL)) &&
(! non_blck) )
{
#ifdef HAVE_MESSAGES