From 8540f6af60f652f52b9c6b47109205da6667d032 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Thu, 20 Dec 2012 00:34:38 +0000 Subject: Fix the poll socket engine on BSD's other than FreeBSD. --- src/socketengines/socketengine_poll.cpp | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/socketengines/socketengine_poll.cpp b/src/socketengines/socketengine_poll.cpp index 6a385c8d8..5c361a0cb 100644 --- a/src/socketengines/socketengine_poll.cpp +++ b/src/socketengines/socketengine_poll.cpp @@ -76,15 +76,28 @@ public: #endif -#include -#ifdef __FreeBSD__ +#ifdef BSD #include +#else + #include #endif PollEngine::PollEngine() { CurrentSetSize = 0; -#ifndef __FreeBSD__ +#ifdef BSD + int mib[2]; + size_t len; + + mib[0] = CTL_KERN; +#ifdef KERN_MAXFILESPERPROC + mib[1] = KERN_MAXFILESPERPROC; +#else + mib[1] = KERN_MAXFILES; +#endif + len = sizeof(MAX_DESCRIPTORS); + sysctl(mib, 2, &MAX_DESCRIPTORS, &len, NULL, 0); +#else int max = ulimit(4, 0); if (max > 0) { @@ -96,14 +109,6 @@ PollEngine::PollEngine() std::cout << "ERROR: Can't determine maximum number of open sockets: " << strerror(errno) << std::endl; ServerInstance->Exit(EXIT_STATUS_SOCKETENGINE); } -#else - int mib[2]; - size_t len; - - mib[0] = CTL_KERN; - mib[1] = KERN_MAXFILES; - len = sizeof(MAX_DESCRIPTORS); - sysctl(mib, 2, &MAX_DESCRIPTORS, &len, NULL, 0); #endif ref = new EventHandler* [GetMaxFds()]; -- cgit v1.2.3