From d43aab71e6d7eccc1d7710c351c708da388f3388 Mon Sep 17 00:00:00 2001 From: FlavioJS Date: Mon, 9 Jun 2008 23:44:52 +0000 Subject: * Added experimental code to set the socket limit at runtime. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12803 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/common/socket.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src') diff --git a/src/common/socket.c b/src/common/socket.c index 9b48f0401..7addc271b 100644 --- a/src/common/socket.c +++ b/src/common/socket.c @@ -32,6 +32,10 @@ #ifndef SIOCGIFCONF #include // SIOCGIFCONF on Solaris, maybe others? [Shinomori] #endif + + #ifdef HAVE_SETRLIMIT + #include + #endif #endif ///////////////////////////////////////////////////////////////////// @@ -1200,6 +1204,23 @@ void socket_init(void) return; } } +#elif defined(HAVE_SETRLIMIT) + {// set socket limit to FD_SETSIZE + struct rlimit rlp; + if( 0 == getrlimit(RLIMIT_NOFILE, &rlp) ) + { + rlp.rlim_cur = FD_SETSIZE; + if( 0 != setrlimit(RLIMIT_NOFILE, &rlp) ) + {// failed, try setting the maximum too (permission to change system limits is required) + rlp.rlim_max = FD_SETSIZE; + if( 0 != setrlimit(RLIMIT_NOFILE, &rlp) ) + {// failed + getrlimit(RLIMIT_NOFILE, &rlp); + ShowWarning("socket_init: %s - failed to set socket limit to %d (current limit %d).\n", strerror(errno), FD_SETSIZE, (int)rlp.rlim_cur); + } + } + } + } #endif // Get initial local ips -- cgit v1.2.3-70-g09d2