summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-07-07 02:23:11 -0400
committerAdam <Adam@anope.org>2011-07-07 02:23:11 -0400
commitd2832b1045a30a995bd0553fd42dcf1c1df1e57f (patch)
tree6347531c044fbebf33665e9d633367421c32838b /src
parent1a4fc39d7b4d90dfa623d46e1ce33a79ec75149c (diff)
Use getrlimit instead of ulimit, fixes freebsd build
Diffstat (limited to 'src')
-rw-r--r--src/socketengines/socketengine_poll.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/socketengines/socketengine_poll.cpp b/src/socketengines/socketengine_poll.cpp
index 773a89839..278485fa7 100644
--- a/src/socketengines/socketengine_poll.cpp
+++ b/src/socketengines/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
@@ -20,17 +22,12 @@ static std::map<int, int> socket_positions;
void SocketEngine::Init()
{
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 CoreException("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];
}