Permalink
Browse files

Fix the poll socket engine on BSD's other than FreeBSD.

  • Loading branch information...
1 parent 618d131 commit 8540f6af60f652f52b9c6b47109205da6667d032 @SaberUK SaberUK committed with attilamolnar Dec 20, 2012
Showing with 16 additions and 11 deletions.
  1. +16 −11 src/socketengines/socketengine_poll.cpp
@@ -76,15 +76,28 @@ class PollEngine : public SocketEngine
#endif
-#include <ulimit.h>
-#ifdef __FreeBSD__
+#ifdef BSD
#include <sys/sysctl.h>
+#else
+ #include <ulimit.h>
#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()];

0 comments on commit 8540f6a

Please sign in to comment.