diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/common/compat.c | 20 | ||||
-rw-r--r-- | src/common/compat.h | 1 | ||||
-rw-r--r-- | src/or/control.c | 3 |
3 files changed, 9 insertions, 15 deletions
diff --git a/src/common/compat.c b/src/common/compat.c index 4930c05c2a..306081754e 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -1589,6 +1589,13 @@ tor_ersatz_socketpair(int family, int type, int protocol, tor_socket_t fd[2]) } #endif +/* Return the maximum number of allowed sockets. */ +int +get_max_sockets(void) +{ + return max_sockets; +} + /** Number of extra file descriptors to keep in reserve beyond those that we * tell Tor it's allowed to use. */ #define ULIMIT_BUFFER 32 /* keep 32 extra fd's beyond ConnLimit_ */ @@ -1601,8 +1608,6 @@ tor_ersatz_socketpair(int family, int type, int protocol, tor_socket_t fd[2]) * If we can't find a number greater than or equal to <b>limit</b>, * then we fail: return -1. * - * If <b>limit</b> is 0, then do not adjust the current maximum. - * * Otherwise, return 0 and store the maximum we found inside <b>max_out</b>.*/ int set_max_file_descriptors(rlim_t limit, int *max_out) @@ -1647,17 +1652,6 @@ set_max_file_descriptors(rlim_t limit, int *max_out) strerror(errno)); return -1; } - if (limit == 0) { - /* XXXX DEAD CODE We can't reach this point, since the first "if" in this - * function increases limit if it started out less than ULIMIT_BUFFER */ - - /* If limit == 0, return the maximum value without setting it. */ - limit = rlim.rlim_max; - if (limit > INT_MAX) - limit = INT_MAX; - *max_out = max_sockets = (int)limit - ULIMIT_BUFFER; - return 0; - } if (rlim.rlim_max < limit) { log_warn(LD_CONFIG,"We need %lu file descriptors available, and we're " "limited to %lu. Please change your ulimit -n.", diff --git a/src/common/compat.h b/src/common/compat.h index 68985d8554..3247a59878 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -617,6 +617,7 @@ set_uint8(void *cp, uint8_t v) #if !defined(HAVE_RLIM_T) typedef unsigned long rlim_t; #endif +int get_max_sockets(void); int set_max_file_descriptors(rlim_t limit, int *max); int tor_disable_debugger_attach(void); int switch_id(const char *user); diff --git a/src/or/control.c b/src/or/control.c index 7a113f2c1c..56f179c394 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -1541,8 +1541,7 @@ getinfo_helper_misc(control_connection_t *conn, const char *question, } #endif } else if (!strcmp(question, "process/descriptor-limit")) { - int max_fds=-1; - set_max_file_descriptors(0, &max_fds); + int max_fds = get_max_sockets(); tor_asprintf(answer, "%d", max_fds); } else if (!strcmp(question, "limits/max-mem-in-queues")) { tor_asprintf(answer, U64_FORMAT, |