diff --git a/include/types/global.h b/include/types/global.h index 503d8f988..009814bcb 100644 --- a/include/types/global.h +++ b/include/types/global.h @@ -222,6 +222,8 @@ extern volatile unsigned long sleeping_thread_mask; extern struct list proc_list; /* list of process in mworker mode */ extern struct mworker_proc *proc_self; /* process structure of current process */ extern int master; /* 1 if in master, 0 otherwise */ +extern unsigned int rlim_fd_cur_at_boot; +extern unsigned int rlim_fd_max_at_boot; /* bit values to go with "warned" above */ #define WARN_BLOCK_DEPRECATED 0x00000001 diff --git a/src/haproxy.c b/src/haproxy.c index 59da1fda6..62263e482 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -220,6 +220,8 @@ static char **next_argv = NULL; struct list proc_list = LIST_HEAD_INIT(proc_list); int master = 0; /* 1 if in master, 0 if in child */ +unsigned int rlim_fd_cur_at_boot = 0; +unsigned int rlim_fd_max_at_boot = 0; struct mworker_proc *proc_self = NULL; @@ -2748,6 +2750,11 @@ int main(int argc, char **argv) exit(1); } + /* take a copy of initial limits before we possibly change them */ + getrlimit(RLIMIT_NOFILE, &limit); + rlim_fd_cur_at_boot = limit.rlim_cur; + rlim_fd_max_at_boot = limit.rlim_max; + /* process all initcalls in order of potential dependency */ RUN_INITCALLS(STG_PREPARE); RUN_INITCALLS(STG_LOCK);