diff options
Diffstat (limited to 'src/microhttpd/daemon.c')
-rw-r--r-- | src/microhttpd/daemon.c | 35 |
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; |