Added call functionality to figure out the maximum number of sockets (file descriptors) available on system.

This commit is contained in:
Jan Vidar Krey 2009-08-02 22:26:07 +02:00
parent 077bffd74f
commit 4931dc5dcb
3 changed files with 22 additions and 0 deletions

View File

@ -61,6 +61,21 @@ int net_initialize()
return -1;
}
size_t net_get_max_sockets()
{
#ifdef HAVE_GETRLIMIT
struct rlimit limits;
if (getrlimit(RLIMIT_NOFILE, &limits) == 0)
{
return limits.rlim_max;
}
LOG_ERROR("getrlimit() failed");
#else
LOG_ERROR("System does not have getrlimit(): constrained to 1024 sockets");
#endif /* HAVE_GETRLIMIT */
return 1024;
}
int net_destroy()
{

View File

@ -87,6 +87,11 @@ extern const char* net_error_string(int code);
*/
extern int net_socket_create(int af, int type, int protocol);
/**
* Returns the maximum number of file/socket descriptors.
*/
extern size_t net_get_max_sockets();
/**
* A wrapper for the close() function call.
*/

View File

@ -83,8 +83,10 @@
#ifndef WIN32
#include <grp.h>
#include <pwd.h>
#include <sys/resource.h>
#define HAVE_STRNDUP
#define HAVE_MEMMEM
#define HAVE_GETRLIMIT
#endif
#ifdef SSL_SUPPORT