libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/microhttpd/daemon.c | 2+-
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