libmicrohttpd2

HTTP server C library (MHD 2.x, alpha)
Log | Files | Refs | README | LICENSE

commit fc3a015216bf5744a75487c75a05e4c73acbb830
parent 29316be58e1fd755fd68a012b09d1fd0eaa1e9f7
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date:   Fri,  1 Aug 2025 18:47:53 +0200

Reduced binary size when built without epoll

Diffstat:
Msrc/mhd2/daemon_add_conn.c | 2+-
Msrc/mhd2/daemon_start.c | 16++--------------
Msrc/mhd2/events_process.c | 3---
Msrc/mhd2/mhd_daemon.h | 13+++++++++++++
4 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/src/mhd2/daemon_add_conn.c b/src/mhd2/daemon_add_conn.c @@ -558,7 +558,7 @@ internal_add_connection (struct MHD_Daemon *daemon, mhd_assert (mhd_FD_FITS_DAEMON (daemon, client_socket)); if ((! non_blck) && - ((mhd_POLL_TYPE_EPOLL == daemon->events.poll_type) || + (mhd_POLL_TYPE_INT_IS_EPOLL (daemon->events.poll_type) || (mhd_WM_INT_EXTERNAL_EVENTS_EDGE == daemon->wmode_int))) { mhd_LOG_MSG (daemon, MHD_SC_NONBLOCKING_REQUIRED, \ diff --git a/src/mhd2/daemon_start.c b/src/mhd2/daemon_start.c @@ -1303,7 +1303,7 @@ daemon_choose_and_preinit_events (struct MHD_Daemon *restrict d, (d->events.poll_type == (enum mhd_IntPollType) s->poll_syscall) \ || ((MHD_SPS_AUTO == s->poll_syscall) && \ ((mhd_POLL_TYPE_EXT == d->events.poll_type) || \ - (mhd_POLL_TYPE_EPOLL == d->events.poll_type)))); + mhd_POLL_TYPE_INT_IS_EPOLL (d->events.poll_type)))); /* Check whether the provided parameter is in the range of expected values. Only block unsupported values. */ @@ -1491,9 +1491,6 @@ daemon_choose_and_preinit_events (struct MHD_Daemon *restrict d, #ifndef MHD_SUPPORT_POLL case mhd_POLL_TYPE_POLL: #endif /* ! MHD_SUPPORT_POLL */ -#ifndef MHD_SUPPORT_EPOLL - case mhd_POLL_TYPE_EPOLL: -#endif /* ! MHD_SUPPORT_EPOLL */ case mhd_POLL_TYPE_NOT_SET_YET: default: mhd_UNREACHABLE (); @@ -2012,9 +2009,6 @@ allocate_events (struct MHD_Daemon *restrict d) #ifndef MHD_SUPPORT_POLL case mhd_POLL_TYPE_POLL: #endif /* ! MHD_SUPPORT_POLL */ -#ifndef MHD_SUPPORT_EPOLL - case mhd_POLL_TYPE_EPOLL: -#endif /* ! MHD_SUPPORT_EPOLL */ case mhd_POLL_TYPE_NOT_SET_YET: default: mhd_UNREACHABLE (); @@ -2324,9 +2318,6 @@ init_daemon_fds_monitoring (struct MHD_Daemon *restrict d) #ifndef MHD_SUPPORT_POLL case mhd_POLL_TYPE_POLL: #endif /* ! MHD_SUPPORT_POLL */ -#ifndef MHD_SUPPORT_EPOLL - case mhd_POLL_TYPE_EPOLL: -#endif /* ! MHD_SUPPORT_EPOLL */ case mhd_POLL_TYPE_NOT_SET_YET: default: mhd_UNREACHABLE (); @@ -2392,9 +2383,6 @@ deinit_daemon_fds_monitoring (struct MHD_Daemon *restrict d) #ifndef MHD_SUPPORT_POLL case mhd_POLL_TYPE_POLL: #endif /* ! MHD_SUPPORT_POLL */ -#ifndef MHD_SUPPORT_EPOLL - case mhd_POLL_TYPE_EPOLL: -#endif /* ! MHD_SUPPORT_EPOLL */ case mhd_POLL_TYPE_NOT_SET_YET: default: mhd_UNREACHABLE (); @@ -2780,7 +2768,7 @@ set_d_threading_type (struct MHD_Daemon *restrict d) case mhd_WM_INT_INTERNAL_EVENTS_THREAD_PER_CONNECTION: mhd_assert (mhd_WM_INT_HAS_THREADS (d->wmode_int)); mhd_assert (mhd_POLL_TYPE_EXT != d->events.poll_type); - mhd_assert (mhd_POLL_TYPE_EPOLL != d->events.poll_type); + mhd_assert (! mhd_POLL_TYPE_INT_IS_EPOLL (d->events.poll_type)); d->threading.d_type = mhd_DAEMON_TYPE_LISTEN_ONLY; return MHD_SC_OK; case mhd_WM_INT_INTERNAL_EVENTS_THREAD_POOL: diff --git a/src/mhd2/events_process.c b/src/mhd2/events_process.c @@ -1720,9 +1720,6 @@ process_all_events_and_data (struct MHD_Daemon *restrict d) #ifndef MHD_SUPPORT_POLL case mhd_POLL_TYPE_POLL: #endif /* ! MHD_SUPPORT_POLL */ -#ifndef MHD_SUPPORT_EPOLL - case mhd_POLL_TYPE_EPOLL: -#endif /* ! MHD_SUPPORT_EPOLL */ case mhd_POLL_TYPE_NOT_SET_YET: default: mhd_UNREACHABLE (); diff --git a/src/mhd2/mhd_daemon.h b/src/mhd2/mhd_daemon.h @@ -222,13 +222,26 @@ enum MHD_FIXED_ENUM_ mhd_IntPollType * Use poll(). */ mhd_POLL_TYPE_POLL = MHD_SPS_POLL +#ifdef MHD_SUPPORT_EPOLL , /** * Use epoll. */ mhd_POLL_TYPE_EPOLL = MHD_SPS_EPOLL +#endif /* MHD_SUPPORT_EPOLL */ }; + +#ifdef MHD_SUPPORT_EPOLL +/** + * Check whether provided mhd_IntPollType value is "epoll" + */ +# define mhd_POLL_TYPE_INT_IS_EPOLL(poll_type) \ + (mhd_POLL_TYPE_EPOLL == poll_type) +#else +# define mhd_POLL_TYPE_INT_IS_EPOLL(poll_type) (0) +#endif + #if defined(HAVE_UINTPTR_T) typedef uintptr_t mhd_SockRelMarker; #else