diff --git a/include/haproxy/limits.h b/include/haproxy/limits.h index 51e03e66a..0b1e84401 100644 --- a/include/haproxy/limits.h +++ b/include/haproxy/limits.h @@ -8,10 +8,23 @@ #ifndef _HAPROXY_LIMITS_H #define _HAPROXY_LIMITS_H #include +#include extern unsigned int rlim_fd_cur_at_boot; extern unsigned int rlim_fd_max_at_boot; +/* returns 0 if the given limit was not set (reported as infinity), otherwise + * returns the limit, useful to print limit values as strings in err messages + * via LIM2A macros. + */ +static inline ulong normalize_rlim(ulong rlim) +{ + if (rlim == RLIM_INFINITY) + return 0; + + return rlim; +} + /* handlers to compute internal process limits, if they are not provided via * cmd line or via configuration file. */ diff --git a/src/debug.c b/src/debug.c index 4526d6040..79ace2ae3 100644 --- a/src/debug.c +++ b/src/debug.c @@ -38,6 +38,7 @@ #include #include #include +#include #if defined(USE_LINUX_CAP) #include #endif @@ -605,14 +606,14 @@ static int debug_parse_cli_show_dev(char **args, char *payload, struct appctx *a chunk_appendf(&trash, " capget() failed at runtime with: %s.\n", strerror(post_mortem.process.caps.err_run)); #endif - if ((ulong)post_mortem.process.limit_fd.rlim_cur != RLIM_INFINITY) - chunk_appendf(&trash, " fd limit (soft): %lu\n", (ulong)post_mortem.process.limit_fd.rlim_cur); - if ((ulong)post_mortem.process.limit_fd.rlim_max != RLIM_INFINITY) - chunk_appendf(&trash, " fd limit (hard): %lu\n", (ulong)post_mortem.process.limit_fd.rlim_max); - if ((ulong)post_mortem.process.limit_ram.rlim_cur != RLIM_INFINITY) - chunk_appendf(&trash, " ram limit (soft): %lu\n", (ulong)post_mortem.process.limit_ram.rlim_cur); - if ((ulong)post_mortem.process.limit_ram.rlim_max != RLIM_INFINITY) - chunk_appendf(&trash, " ram limit (hard): %lu\n", (ulong)post_mortem.process.limit_ram.rlim_max); + chunk_appendf(&trash, " fd limit (soft): %s\n", + LIM2A(normalize_rlim((ulong)post_mortem.process.limit_fd.rlim_cur), "unlimited")); + chunk_appendf(&trash, " fd limit (hard): %s\n", + LIM2A(normalize_rlim((ulong)post_mortem.process.limit_fd.rlim_max), "unlimited")); + chunk_appendf(&trash, " ram limit (soft): %s\n", + LIM2A(normalize_rlim((ulong)post_mortem.process.limit_ram.rlim_cur), "unlimited")); + chunk_appendf(&trash, " ram limit (hard): %s\n", + LIM2A(normalize_rlim((ulong)post_mortem.process.limit_ram.rlim_max), "unlimited")); return cli_msg(appctx, LOG_INFO, trash.area); } diff --git a/src/limits.c b/src/limits.c index c5b4820c6..bb7451060 100644 --- a/src/limits.c +++ b/src/limits.c @@ -5,7 +5,6 @@ * */ -#include #include #include #include