summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SConstruct1
-rw-r--r--configure.ac1
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/config.h.cmake1
-rw-r--r--src/meson.build1
-rw-r--r--src/server.c9
6 files changed, 14 insertions, 0 deletions
diff --git a/SConstruct b/SConstruct
index acb9b1b3..18c9d059 100644
--- a/SConstruct
+++ b/SConstruct
@@ -388,6 +388,7 @@ if 1:
'sys/loadavg.h',
'sys/poll.h',
'sys/prctl.h',
+ 'sys/procctl.h',
'sys/sendfile.h',
'sys/time.h',
'sys/wait.h',
diff --git a/configure.ac b/configure.ac
index d458e159..35ed0a3e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -113,6 +113,7 @@ AC_CHECK_HEADERS([\
sys/mman.h \
sys/poll.h \
sys/prctl.h \
+ sys/procctl.h \
sys/resource.h \
sys/select.h \
sys/sendfile.h \
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9ae975f9..6f540ed5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -98,6 +98,7 @@ check_include_files(sys/mman.h HAVE_SYS_MMAN_H)
check_include_files(sys/loadavg.h HAVE_SYS_LOADAVG_H)
check_include_files(sys/poll.h HAVE_SYS_POLL_H)
check_include_files(sys/prctl.h HAVE_SYS_PRCTL_H)
+check_include_files(sys/procctl.h HAVE_SYS_PROCCTL_H)
check_include_files(sys/resource.h HAVE_SYS_RESOURCE_H)
check_include_files(sys/sendfile.h HAVE_SYS_SENDFILE_H)
check_include_files(sys/select.h HAVE_SYS_SELECT_H)
diff --git a/src/config.h.cmake b/src/config.h.cmake
index 9465925d..f8df2117 100644
--- a/src/config.h.cmake
+++ b/src/config.h.cmake
@@ -22,6 +22,7 @@
#cmakedefine HAVE_SYS_MMAN_H
#cmakedefine HAVE_SYS_POLL_H
#cmakedefine HAVE_SYS_PRCTL_H
+#cmakedefine HAVE_SYS_PROCCTL_H
#cmakedefine HAVE_SYS_RESOURCE_H
#cmakedefine HAVE_SYS_SENDFILE_H
#cmakedefine HAVE_SYS_SELECT_H
diff --git a/src/meson.build b/src/meson.build
index 3ee68677..da99d459 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -36,6 +36,7 @@ conf_data.set('HAVE_SYS_LOADAVG_H', compiler.has_header('sys/loadavg.h'))
conf_data.set('HAVE_SYS_MMAN_H', compiler.has_header('sys/mman.h'))
conf_data.set('HAVE_SYS_POLL_H', compiler.has_header('sys/poll.h'))
conf_data.set('HAVE_SYS_PRCTL_H', compiler.has_header('sys/prctl.h'))
+conf_data.set('HAVE_SYS_PROCCTL_H', compiler.has_header('sys/procctl.h'))
conf_data.set('HAVE_SYS_RESOURCE_H', compiler.has_header('sys/resource.h'))
conf_data.set('HAVE_SYS_SENDFILE_H', compiler.has_header('sys/sendfile.h'))
conf_data.set('HAVE_SYS_SELECT_H', compiler.has_header('sys/select.h'))
diff --git a/src/server.c b/src/server.c
index 3ec94e2d..25538605 100644
--- a/src/server.c
+++ b/src/server.c
@@ -65,6 +65,9 @@ static const buffer default_server_tag = { CONST_STR_LEN(PACKAGE_DESC)+1, 0 };
#ifdef HAVE_SYS_PRCTL_H
# include <sys/prctl.h>
#endif
+#ifdef HAVE_SYS_PROCCTL_H
+# include <sys/procctl.h>
+#endif
#ifdef HAVE_MALLOC_H
#ifndef LIGHTTPD_STATIC
@@ -1475,6 +1478,12 @@ static int server_main_setup (server * const srv, int argc, char **argv) {
if (srv->srvconf.enable_cores) {
prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
}
+#elif defined(HAVE_SYS_PROCCTL_H) && defined(PROC_TRACE_CTL_ENABLE)
+ /* (DragonFlyBSD has procctl(), but not PROC_TRACE_CTL_ENABLE) */
+ if (srv->srvconf.enable_cores) {
+ int dumpable = PROC_TRACE_CTL_ENABLE;
+ procctl(P_PID, 0, PROC_TRACE_CTL, &dumpable);
+ }
#endif
}