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:
This commit is contained in:
Kolja Nowak
2022-05-18 10:19:31 +03:00
parent 5d28b72d69
commit b1fff186c5
+1 -1
View File
@@ -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