From: Gunnar Beutner Date: Mon, 26 May 2014 05:35:07 +0000 (+0200) Subject: Make sure Application::InitializeBase() when RLIMIT_NOFILE is set to "unlimited". X-Git-Tag: v2.0.0-beta1~19 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f9512dd49516dc4a01067371cfbce2d5ac5897c5;p=icinga2 Make sure Application::InitializeBase() when RLIMIT_NOFILE is set to "unlimited". Refs #6257 --- diff --git a/lib/base/application.cpp b/lib/base/application.cpp index 92a154152..802089567 100644 --- a/lib/base/application.cpp +++ b/lib/base/application.cpp @@ -110,11 +110,17 @@ void Application::InitializeBase(void) { #ifndef _WIN32 rlimit rl; - if (getrlimit(RLIMIT_NOFILE, &rl) >= 0) - for (rlim_t i = 3; i < rl.rlim_max; i++) { + if (getrlimit(RLIMIT_NOFILE, &rl) >= 0) { + rlim_t maxfds = rl.rlim_max; + + if (maxfds == RLIM_INFINITY) + maxfds = 65536; + + for (rlim_t i = 3; i < maxfds; i++) { if (close(i) >= 0) std::cerr << "Closed FD " << i << " which we inherited from our parent process." << std::endl; } + } #endif /* _WIN32 */ Utility::ExecuteDeferredInitializers();