aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/compat.c20
-rw-r--r--src/common/compat.h1
-rw-r--r--src/or/control.c3
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,