|
@@ -663,6 +663,10 @@ tor_socketpair(int family, int type, int protocol, int fd[2])
|
|
|
|
|
|
#define ULIMIT_BUFFER 32 /* keep 32 extra fd's beyond _ConnLimit */
|
|
|
|
|
|
+#if defined(HAVE_GETRLIMIT) && !defined(HAVE_RLIM_T)
|
|
|
+typedef unsigned long rlim_t;
|
|
|
+#endif
|
|
|
+
|
|
|
/** Learn the maximum allowed number of file descriptors. (Some systems
|
|
|
* have a low soft limit.
|
|
|
*
|
|
@@ -684,7 +688,7 @@ set_max_file_descriptors(unsigned long limit, unsigned long cap)
|
|
|
}
|
|
|
#else
|
|
|
struct rlimit rlim;
|
|
|
- unsigned long most;
|
|
|
+ rlim_t most;
|
|
|
tor_assert(limit > 0);
|
|
|
tor_assert(cap > 0);
|
|
|
|
|
@@ -693,16 +697,17 @@ set_max_file_descriptors(unsigned long limit, unsigned long cap)
|
|
|
strerror(errno));
|
|
|
return -1;
|
|
|
}
|
|
|
+ //log_notice(LD_CONFIG, "%llu %llu", rlim.rlim_cur, rlim.rlim_max);
|
|
|
if ((unsigned long)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.",
|
|
|
limit, (unsigned long)rlim.rlim_max);
|
|
|
return -1;
|
|
|
}
|
|
|
- most = ((unsigned long)rlim.rlim_max > cap) ? cap : (unsigned) rlim.rlim_max;
|
|
|
+ most = rlim.rlim_max > (rlim_t)cap ? (rlim_t)cap : rlim.rlim_max;
|
|
|
if (most > (unsigned long)rlim.rlim_cur) {
|
|
|
log_info(LD_NET,"Raising max file descriptors from %lu to %lu.",
|
|
|
- (unsigned long)rlim.rlim_cur, most);
|
|
|
+ (unsigned long)rlim.rlim_cur, (unsigned long)most);
|
|
|
}
|
|
|
rlim.rlim_cur = most;
|
|
|
if (setrlimit(RLIMIT_NOFILE, &rlim) != 0) {
|