aboutsummaryrefslogtreecommitdiff
path: root/src/common/compat.c
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@ev0ke.net>2015-07-30 14:43:15 -0400
committerDavid Goulet <dgoulet@ev0ke.net>2015-07-30 15:21:12 -0400
commit8c83e8cec0e8d4c29577ae7c7b27637e5b91c99e (patch)
treeb5d30b2201c2a4f5610bf20e5935129610ddc53c /src/common/compat.c
parentaa22b9672cd7faa4ea856e54e41cd0d73039ae1a (diff)
downloadtor-8c83e8cec0e8d4c29577ae7c7b27637e5b91c99e.tar.gz
tor-8c83e8cec0e8d4c29577ae7c7b27637e5b91c99e.zip
Add get_max_sockets() and remove dead code
The control port was using set_max_file_descriptors() with a limit set to 0 to query the number of maximum socket Tor can use. With the recent changes to that function, a check was introduced to make sure a user can not set a value below the amount we reserved for non socket. This commit adds get_max_sockets() that returns the value of max_sockets so we can stop using that "setter" function to get the current value. Finally, the dead code is removed that is the code that checked for limit equal to 0. From now on, set_max_file_descriptors() should never be used with a limit set to 0 for a valid use case. Fixes #16697 Signed-off-by: David Goulet <dgoulet@ev0ke.net>
Diffstat (limited to 'src/common/compat.c')
-rw-r--r--src/common/compat.c20
1 files changed, 7 insertions, 13 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.",