diff options
author | Linus Nordberg <linus@nordberg.se> | 2013-08-26 12:04:07 +0200 |
---|---|---|
committer | Linus Nordberg <linus@nordberg.se> | 2013-08-26 12:08:44 +0200 |
commit | 3bd0555f888da46a9ad7596b393d6f21f6b0221c (patch) | |
tree | 03629bcfe26f2cf9cf50e6c3c31140af67989c5c | |
parent | 9174b0aca94fae0c483e2ae10608d660dc52f9c4 (diff) |
Return free memory more aggressively.pthread_create_attr
Have free(3) call sbrk(2) when there's 4 MB to free (default on Linux
seems to be 128).
Patch by Fabian Mauchle.
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | radsecproxy.c | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac index e5df020..4c500e7 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ dnl Copyright (c) 2006-2010, UNINETT AS -dnl Copyright (c) 2010-2012, NORDUnet A/S +dnl Copyright (c) 2010-2013, NORDUnet A/S dnl See LICENSE for licensing information. AC_INIT(radsecproxy, 1.7-dev, radsecproxy@uninett.no) @@ -7,6 +7,8 @@ AC_CANONICAL_TARGET AM_INIT_AUTOMAKE AC_PROG_CC AC_PROG_RANLIB +AC_CHECK_FUNCS([mallopt]) + udp=yes AC_ARG_ENABLE(udp, [ --enable-udp whether to enable UDP transport: yes/no; default yes ], diff --git a/radsecproxy.c b/radsecproxy.c index d2f72b0..caec987 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -39,6 +39,9 @@ #include <string.h> #include <unistd.h> #include <limits.h> +#if defined(HAVE_MALLOPT) +#include <malloc.h> +#endif #ifdef SYS_SOLARIS9 #include <fcntl.h> #endif @@ -3335,6 +3338,10 @@ int radsecproxy_main(int argc, char **argv) { debugx(1, DBG_ERR, "pthread_attr_init failed"); if (pthread_attr_setstacksize(&pthread_attr, PTHREAD_STACK_SIZE)) debugx(1, DBG_ERR, "pthread_attr_setstacksize failed"); +#if defined(HAVE_MALLOPT) + if (mallopt(M_TRIM_THRESHOLD, 4 * 1024) != 1) + debugx(1, DBG_ERR, "mallopt failed"); +#endif for (i = 0; i < RAD_PROTOCOUNT; i++) protodefs[i] = protoinits[i](i); |