Implement an environment variable to keep Icinga from closing FDs on startup

fixes #12510
This commit is contained in:
Gunnar Beutner 2016-08-23 05:11:22 +02:00 committed by Michael Friedrich
parent 218e780a44
commit 53f5a603ce
1 changed files with 11 additions and 9 deletions

View File

@ -706,20 +706,22 @@ VOID WINAPI ServiceMain(DWORD argc, LPSTR *argv)
int main(int argc, char **argv)
{
#ifndef _WIN32
rlimit rl;
if (getrlimit(RLIMIT_NOFILE, &rl) >= 0) {
rlim_t maxfds = rl.rlim_max;
if (!getenv("ICINGA2_KEEP_FDS")) {
rlimit rl;
if (getrlimit(RLIMIT_NOFILE, &rl) >= 0) {
rlim_t maxfds = rl.rlim_max;
if (maxfds == RLIM_INFINITY)
maxfds = 65536;
if (maxfds == RLIM_INFINITY)
maxfds = 65536;
for (rlim_t i = 3; i < maxfds; i++) {
int rc = close(i);
for (rlim_t i = 3; i < maxfds; i++) {
int rc = close(i);
#ifdef I2_DEBUG
if (rc >= 0)
std::cerr << "Closed FD " << i << " which we inherited from our parent process." << std::endl;
if (rc >= 0)
std::cerr << "Closed FD " << i << " which we inherited from our parent process." << std::endl;
#endif /* I2_DEBUG */
}
}
}
#endif /* _WIN32 */