diff options
| author | Adam <Adam@anope.org> | 2011-08-09 17:25:22 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2011-08-09 17:25:22 -0400 |
| commit | e9ce53fe8869e6186a04b06b46ca903c1865eba1 (patch) | |
| tree | 72c834646db8802a334e3765c275afb5f7f43ed2 /modules | |
| parent | 7c06078cf1674e8ef8ea47ad113ec6d8cc0adb2e (diff) | |
Use getrlimit instead of ulimit, fixes freebsd build of poll()
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/socketengines/m_socketengine_poll.cpp | 19 |
1 files 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 <ulimit.h> # include <sys/poll.h> # include <poll.h> +# include <sys/types.h> +# include <sys/time.h> +# include <sys/resource.h> # 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]; } |
