Loading changes/bug21074_downgrade 0 → 100644 +4 −0 Original line number Diff line number Diff line o Minor bugfixes: - Don't exit the Tor process if setrlimit() fails to change the file limit (which can happen sometimes on some versions of OSX). Fixes bug 21074; bugfix on 0.0.9pre5. src/common/compat.c +7 −7 Original line number Diff line number Diff line Loading @@ -1665,7 +1665,7 @@ get_max_sockets(void) * fail by returning -1 and <b>max_out</b> is untouched. * * If we are unable to set the limit value because of setrlimit() failing, * return -1 and <b>max_out</b> is set to the current maximum value returned * return 0 and <b>max_out</b> is set to the current maximum value returned * by getrlimit(). * * Otherwise, return 0 and store the maximum we found inside <b>max_out</b> Loading Loading @@ -1730,13 +1730,14 @@ set_max_file_descriptors(rlim_t limit, int *max_out) rlim.rlim_cur = rlim.rlim_max; if (setrlimit(RLIMIT_NOFILE, &rlim) != 0) { int bad = 1; int couldnt_set = 1; const int setrlimit_errno = errno; #ifdef OPEN_MAX uint64_t try_limit = OPEN_MAX - ULIMIT_BUFFER; if (errno == EINVAL && try_limit < (uint64_t) rlim.rlim_cur) { /* On some platforms, OPEN_MAX is the real limit, and getrlimit() is * full of nasty lies. I'm looking at you, OSX 10.5.... */ rlim.rlim_cur = try_limit; rlim.rlim_cur = MIN((rlim_t) try_limit, rlim.rlim_cur); if (setrlimit(RLIMIT_NOFILE, &rlim) == 0) { if (rlim.rlim_cur < (rlim_t)limit) { log_warn(LD_CONFIG, "We are limited to %lu file descriptors by " Loading @@ -1751,14 +1752,13 @@ set_max_file_descriptors(rlim_t limit, int *max_out) (unsigned long)try_limit, (unsigned long)OPEN_MAX, (unsigned long)rlim.rlim_max); } bad = 0; couldnt_set = 0; } } #endif /* OPEN_MAX */ if (bad) { if (couldnt_set) { log_warn(LD_CONFIG,"Couldn't set maximum number of file descriptors: %s", strerror(errno)); return -1; strerror(setrlimit_errno)); } } /* leave some overhead for logs, etc, */ Loading Loading
changes/bug21074_downgrade 0 → 100644 +4 −0 Original line number Diff line number Diff line o Minor bugfixes: - Don't exit the Tor process if setrlimit() fails to change the file limit (which can happen sometimes on some versions of OSX). Fixes bug 21074; bugfix on 0.0.9pre5.
src/common/compat.c +7 −7 Original line number Diff line number Diff line Loading @@ -1665,7 +1665,7 @@ get_max_sockets(void) * fail by returning -1 and <b>max_out</b> is untouched. * * If we are unable to set the limit value because of setrlimit() failing, * return -1 and <b>max_out</b> is set to the current maximum value returned * return 0 and <b>max_out</b> is set to the current maximum value returned * by getrlimit(). * * Otherwise, return 0 and store the maximum we found inside <b>max_out</b> Loading Loading @@ -1730,13 +1730,14 @@ set_max_file_descriptors(rlim_t limit, int *max_out) rlim.rlim_cur = rlim.rlim_max; if (setrlimit(RLIMIT_NOFILE, &rlim) != 0) { int bad = 1; int couldnt_set = 1; const int setrlimit_errno = errno; #ifdef OPEN_MAX uint64_t try_limit = OPEN_MAX - ULIMIT_BUFFER; if (errno == EINVAL && try_limit < (uint64_t) rlim.rlim_cur) { /* On some platforms, OPEN_MAX is the real limit, and getrlimit() is * full of nasty lies. I'm looking at you, OSX 10.5.... */ rlim.rlim_cur = try_limit; rlim.rlim_cur = MIN((rlim_t) try_limit, rlim.rlim_cur); if (setrlimit(RLIMIT_NOFILE, &rlim) == 0) { if (rlim.rlim_cur < (rlim_t)limit) { log_warn(LD_CONFIG, "We are limited to %lu file descriptors by " Loading @@ -1751,14 +1752,13 @@ set_max_file_descriptors(rlim_t limit, int *max_out) (unsigned long)try_limit, (unsigned long)OPEN_MAX, (unsigned long)rlim.rlim_max); } bad = 0; couldnt_set = 0; } } #endif /* OPEN_MAX */ if (bad) { if (couldnt_set) { log_warn(LD_CONFIG,"Couldn't set maximum number of file descriptors: %s", strerror(errno)); return -1; strerror(setrlimit_errno)); } } /* leave some overhead for logs, etc, */ Loading