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 authored and Evgeny Grin (Karlson2k) committed 2023-03-31 18:50:20 +02:00
1 parent e73d718963
commit e451f079d2
1 file changed
+1 -1
+1 -1
View File
@@ -2997,7 +2997,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