aboutsummaryrefslogtreecommitdiff
path: root/src/microhttpd/daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/daemon.c')
-rw-r--r--src/microhttpd/daemon.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 22b0a775..42c21b6c 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -5625,6 +5625,11 @@ setup_epoll_to_listen (struct MHD_Daemon *daemon)
5625 struct epoll_event event; 5625 struct epoll_event event;
5626 MHD_socket ls; 5626 MHD_socket ls;
5627 5627
5628 mhd_assert (0 != (daemon->options & MHD_USE_EPOLL));
5629 mhd_assert (0 == (daemon->options & MHD_USE_THREAD_PER_CONNECTION));
5630 mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
5631 (MHD_INVALID_SOCKET != (ls = daemon->listen_fd)) || \
5632 MHD_ITC_IS_VALID_ (daemon->itc) );
5628 daemon->epoll_fd = setup_epoll_fd (daemon); 5633 daemon->epoll_fd = setup_epoll_fd (daemon);
5629 if (-1 == daemon->epoll_fd) 5634 if (-1 == daemon->epoll_fd)
5630 return MHD_NO; 5635 return MHD_NO;
@@ -5636,24 +5641,26 @@ setup_epoll_to_listen (struct MHD_Daemon *daemon)
5636 return MHD_NO; 5641 return MHD_NO;
5637 } 5642 }
5638#endif /* HTTPS_SUPPORT && UPGRADE_SUPPORT */ 5643#endif /* HTTPS_SUPPORT && UPGRADE_SUPPORT */
5639 if ( (MHD_INVALID_SOCKET == (ls = daemon->listen_fd)) || 5644 if ( (MHD_INVALID_SOCKET != (ls = daemon->listen_fd)) &&
5640 (daemon->was_quiesced) ) 5645 (! daemon->was_quiesced) )
5641 return MHD_YES; /* non-listening daemon */
5642 event.events = EPOLLIN;
5643 event.data.ptr = daemon;
5644 if (0 != epoll_ctl (daemon->epoll_fd,
5645 EPOLL_CTL_ADD,
5646 ls,
5647 &event))
5648 { 5646 {
5647 event.events = EPOLLIN;
5648 event.data.ptr = daemon;
5649 if (0 != epoll_ctl (daemon->epoll_fd,
5650 EPOLL_CTL_ADD,
5651 ls,
5652 &event))
5653 {
5649#ifdef HAVE_MESSAGES 5654#ifdef HAVE_MESSAGES
5650 MHD_DLOG (daemon, 5655 MHD_DLOG (daemon,
5651 _ ("Call to epoll_ctl failed: %s\n"), 5656 _ ("Call to epoll_ctl failed: %s\n"),
5652 MHD_socket_last_strerr_ ()); 5657 MHD_socket_last_strerr_ ());
5653#endif 5658#endif
5654 return MHD_NO; 5659 return MHD_NO;
5660 }
5661 daemon->listen_socket_in_epoll = true;
5655 } 5662 }
5656 daemon->listen_socket_in_epoll = true; 5663
5657 if (MHD_ITC_IS_VALID_ (daemon->itc)) 5664 if (MHD_ITC_IS_VALID_ (daemon->itc))
5658 { 5665 {
5659 event.events = EPOLLIN; 5666 event.events = EPOLLIN;