libmicrohttpd

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

commit 87d40361d30012eced13e0d0a7e0544754bc777b
parent 4b8fb0700b8671d1d92100285632e2671703c0f5
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Mon, 17 Oct 2022 12:00:03 +0300

testzzuf: added special debug functions

Diffstat:
Msrc/testzzuf/Makefile.am | 1+
Asrc/testzzuf/mhd_debug_funcs.c | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/testzzuf/mhd_debug_funcs.h | 47+++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 111 insertions(+), 0 deletions(-)

diff --git a/src/testzzuf/Makefile.am b/src/testzzuf/Makefile.am @@ -3,6 +3,7 @@ SUBDIRS = . AM_CPPFLAGS = \ -I$(top_srcdir)/src/include \ + -I$(top_srcdir)/src/microhttpd \ -DMHD_CPU_COUNT=$(CPU_COUNT) \ $(CPPFLAGS_ac) $(LIBCURL_CPPFLAGS) diff --git a/src/testzzuf/mhd_debug_funcs.c b/src/testzzuf/mhd_debug_funcs.c @@ -0,0 +1,63 @@ +/* + This file is part of GNU libmicrohttpd + Copyright (C) 2022 Evgeny Grin (Karlson2k) + + GNU libmicrohttpd is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with GNU libmicrohttpd. + If not, see <http://www.gnu.org/licenses/>. +*/ + +/** + * @file testzzuf/mhd_debug_funcs.c + * @brief Implementations of MHD private debug functions + * @author Karlson2k (Evgeny Grin) + */ + +#include "mhd_debug_funcs.h" +#include "internal.h" +#include "mhd_sockets.h" + +/** + * Checks whether MHD can use accept() syscall and + * avoid accept4() syscall. + * @return non-zero if accept() is possible, + * zero if accept4() is always used by MHD + */ +int +MHD_is_avoid_accept4_possible_ (void) +{ +#if ! defined(USE_ACCEPT4) + return ! 0; +#else /* ! USE_ACCEPT4 */ + return (MHD_YES == MHD_is_feature_supported (MHD_FEATURE_DEBUG_BUILD)) ? + ! 0 : 0; +#endif /* ! USE_ACCEPT4 */ +} + + +/** + * Switch MHD daemon to use accept() syscalls for new connections. + * @param daemon the daemon to operate + */ +void +MHD_avoid_accept4_ (struct MHD_Daemon *daemon) +{ + (void) daemon; /* Mute compiler warning */ +#ifdef USE_ACCEPT4 +#ifdef _DEBUG + daemon->avoid_accept4 = true; +#else /* ! _DEBUG */ + abort (); +#endif /* ! _DEBUG */ +#endif /* USE_ACCEPT4 */ +} diff --git a/src/testzzuf/mhd_debug_funcs.h b/src/testzzuf/mhd_debug_funcs.h @@ -0,0 +1,47 @@ +/* + This file is part of GNU libmicrohttpd + Copyright (C) 2022 Evgeny Grin (Karlson2k) + + GNU libmicrohttpd is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with GNU libmicrohttpd. + If not, see <http://www.gnu.org/licenses/>. +*/ + +/** + * @file testzzuf/mhd_debug_funcs.h + * @brief Declarations of MHD private debug functions + * @author Karlson2k (Evgeny Grin) + */ + +#ifndef MHD_DEBUG_FUNCS_H +#define MHD_DEBUG_FUNCS_H 1 + +struct MHD_Daemon; + +/** + * Checks whether MHD can use accept() syscall and + * avoid accept4() syscall. + * @return non-zero if accept() is possible, + * zero if accept4() is always used by MHD + */ +int +MHD_is_avoid_accept4_possible_ (void); + +/** + * Switch MHD daemon to use accept() syscalls for new connections. + * @param daemon the daemon to operate + */ +void +MHD_avoid_accept4_ (struct MHD_Daemon *daemon); + +#endif /* MHD_DEBUG_FUNCS_H */