libmicrohttpd

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

commit 558a5c86b2f3b485dd0c162fb3204c9c00810920
parent 1125f7dd9fc64b0577f7ba6b41567c7e4b2e5e88
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Thu,  8 Oct 2020 11:52:39 +0300

setup_epoll_to_listen: do add ITC when have no listen socket

Diffstat:
Msrc/microhttpd/daemon.c | 35+++++++++++++++++++++--------------
1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c @@ -5625,6 +5625,11 @@ setup_epoll_to_listen (struct MHD_Daemon *daemon) struct epoll_event event; MHD_socket ls; + mhd_assert (0 != (daemon->options & MHD_USE_EPOLL)); + mhd_assert (0 == (daemon->options & MHD_USE_THREAD_PER_CONNECTION)); + mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \ + (MHD_INVALID_SOCKET != (ls = daemon->listen_fd)) || \ + MHD_ITC_IS_VALID_ (daemon->itc) ); daemon->epoll_fd = setup_epoll_fd (daemon); if (-1 == daemon->epoll_fd) return MHD_NO; @@ -5636,24 +5641,26 @@ setup_epoll_to_listen (struct MHD_Daemon *daemon) return MHD_NO; } #endif /* HTTPS_SUPPORT && UPGRADE_SUPPORT */ - if ( (MHD_INVALID_SOCKET == (ls = daemon->listen_fd)) || - (daemon->was_quiesced) ) - return MHD_YES; /* non-listening daemon */ - event.events = EPOLLIN; - event.data.ptr = daemon; - if (0 != epoll_ctl (daemon->epoll_fd, - EPOLL_CTL_ADD, - ls, - &event)) + if ( (MHD_INVALID_SOCKET != (ls = daemon->listen_fd)) && + (! daemon->was_quiesced) ) { + event.events = EPOLLIN; + event.data.ptr = daemon; + if (0 != epoll_ctl (daemon->epoll_fd, + EPOLL_CTL_ADD, + ls, + &event)) + { #ifdef HAVE_MESSAGES - MHD_DLOG (daemon, - _ ("Call to epoll_ctl failed: %s\n"), - MHD_socket_last_strerr_ ()); + MHD_DLOG (daemon, + _ ("Call to epoll_ctl failed: %s\n"), + MHD_socket_last_strerr_ ()); #endif - return MHD_NO; + return MHD_NO; + } + daemon->listen_socket_in_epoll = true; } - daemon->listen_socket_in_epoll = true; + if (MHD_ITC_IS_VALID_ (daemon->itc)) { event.events = EPOLLIN;