From e9ce53fe8869e6186a04b06b46ca903c1865eba1 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 9 Aug 2011 17:25:22 -0400 Subject: [PATCH] Use getrlimit instead of ulimit, fixes freebsd build of poll() --- modules/socketengines/m_socketengine_poll.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/modules/socketengines/m_socketengine_poll.cpp b/modules/socketengines/m_socketengine_poll.cpp index e85c79bb0..ba928cb0b 100644 --- a/modules/socketengines/m_socketengine_poll.cpp +++ b/modules/socketengines/m_socketengine_poll.cpp @@ -1,9 +1,11 @@ #include "module.h" #ifndef _WIN32 -# include # include # include +# include +# include +# include # ifndef POLLRDHUP # define POLLRDHUP 0 # endif @@ -24,17 +26,12 @@ class SocketEnginePoll : public SocketEngineBase SocketEnginePoll() { SocketCount = 0; -#ifndef _WIN32 - max = ulimit(4, 0); -#else - max = 1024; -#endif - if (max <= 0) - { - Log() << "Can't determine maximum number of open sockets"; - throw ModuleException("Can't determine maximum number of open sockets"); - } + rlimit fd_limit; + if (getrlimit(RLIMIT_NOFILE, &fd_limit) == -1) + throw CoreException(Anope::LastError()); + + max = fd_limit.rlim_cur; events = new pollfd[max]; }