From: Olivier Houchard Date: Mon, 25 Feb 2019 13:26:54 +0000 (+0100) Subject: MINOR: fd: Use closefrom() as my_closefrom() if supported. X-Git-Tag: v2.0-dev1~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2292edf67c03d22c2d2bbe14fbe29b7e677d49ff;p=thirdparty%2Fhaproxy.git MINOR: fd: Use closefrom() as my_closefrom() if supported. Add a new option, USE_CLOSEFROM. If set, it is assumed the system provides a closefrom() function, so use it. It is only implicitely used on FreeBSD for now, it should work on OpenBSD/NetBSD/DragonflyBSD/Solaris too, but as I have no such system to test it, I'd rather leave it disabled by default. Users can add USE_CLOSEFROM explicitely on their make command line to activate it. --- diff --git a/Makefile b/Makefile index e2c4d17a16..6c19d3dfe9 100644 --- a/Makefile +++ b/Makefile @@ -374,6 +374,7 @@ ifeq ($(TARGET),freebsd) USE_LIBCRYPT = implicit USE_THREAD = implicit USE_CPU_AFFINITY= implicit + USE_CLOSEFROM = implicit else ifeq ($(TARGET),osx) # This is for Mac OS/X @@ -682,6 +683,10 @@ endif endif endif +ifneq ($(USE_CLOSEFROM),) +OPTIONS_CFLAGS += -DUSE_CLOSEFROM +endif + ifneq ($(USE_LUA),) check_lua_lib = $(shell echo "int main(){}" | $(CC) -o /dev/null -x c - $(2) -l$(1) 2>/dev/null && echo $(1)) check_lua_inc = $(shell if [ -d $(2)$(1) ]; then echo $(2)$(1); fi;) diff --git a/src/fd.c b/src/fd.c index 314e10fa2f..581c5aaae8 100644 --- a/src/fd.c +++ b/src/fd.c @@ -468,7 +468,13 @@ void fd_process_cached_events() fdlist_process_cached_events(&fd_cache); } -#if defined(ENABLE_POLL) +#if defined(USE_CLOSEFROM) +void my_closefrom(int start) +{ + closefrom(start); +} + +#elif defined(ENABLE_POLL) /* This is a portable implementation of closefrom(). It closes all open file * descriptors starting at and above. It relies on the fact that poll() * will return POLLNVAL for each invalid (hence close) file descriptor passed