MINOR: global: keep a copy of the initial rlim_fd_cur and rlim_fd_max values

Let's keep a copy of these initial values. They will be useful to
compute automatic maxconn, as well as to restore proper limits when
doing an execve() on external checks.
This commit is contained in:
Willy Tarreau 2019-03-01 10:09:28 +01:00
parent 645635da84
commit bf6964007a
2 changed files with 9 additions and 0 deletions

View File

@ -222,6 +222,8 @@ extern volatile unsigned long sleeping_thread_mask;
extern struct list proc_list; /* list of process in mworker mode */ extern struct list proc_list; /* list of process in mworker mode */
extern struct mworker_proc *proc_self; /* process structure of current process */ extern struct mworker_proc *proc_self; /* process structure of current process */
extern int master; /* 1 if in master, 0 otherwise */ 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 */ /* bit values to go with "warned" above */
#define WARN_BLOCK_DEPRECATED 0x00000001 #define WARN_BLOCK_DEPRECATED 0x00000001

View File

@ -220,6 +220,8 @@ static char **next_argv = NULL;
struct list proc_list = LIST_HEAD_INIT(proc_list); struct list proc_list = LIST_HEAD_INIT(proc_list);
int master = 0; /* 1 if in master, 0 if in child */ 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; struct mworker_proc *proc_self = NULL;
@ -2748,6 +2750,11 @@ int main(int argc, char **argv)
exit(1); 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 */ /* process all initcalls in order of potential dependency */
RUN_INITCALLS(STG_PREPARE); RUN_INITCALLS(STG_PREPARE);
RUN_INITCALLS(STG_LOCK); RUN_INITCALLS(STG_LOCK);