Lower the minimum value for MaxMemInQueues to 64 MB for relays.

For clients, there is no minimum value; in both cases, we warn if
the value seems too low.

Closes ticket 24308.
This commit is contained in:
Nick Mathewson
2020-08-11 17:01:49 -04:00
parent 431dcc42e0
commit a02002dc99
2 changed files with 27 additions and 4 deletions
+21 -4
View File
@@ -4585,6 +4585,9 @@ options_validate(or_options_t *old_options, or_options_t *options,
STATIC uint64_t
compute_real_max_mem_in_queues(const uint64_t val, bool is_server)
{
#define MIN_SERVER_MB 64
#define MIN_UNWARNED_SERVER_MB 256
#define MIN_UNWARNED_CLIENT_MB 64
uint64_t result;
if (val == 0) {
@@ -4650,10 +4653,24 @@ compute_real_max_mem_in_queues(const uint64_t val, bool is_server)
notice_sent = 1;
}
return result;
} else if (val < ONE_GIGABYTE / 4) {
log_warn(LD_CONFIG, "MaxMemInQueues must be at least 256 MB for now. "
"Ideally, have it as large as you can afford.");
return ONE_GIGABYTE / 4;
} else if (is_server && val < ONE_MEGABYTE * MIN_SERVER_MB) {
/* We can't configure less than this much on a server. */
log_warn(LD_CONFIG, "MaxMemInQueues must be at least %d MB on servers "
"for now. Ideally, have it as large as you can afford.",
MIN_SERVER_MB);
return MIN_SERVER_MB * ONE_MEGABYTE;
} else if (is_server && val < ONE_MEGABYTE * MIN_UNWARNED_SERVER_MB) {
/* On a server, if it's less than this much, we warn that things
* may go badly. */
log_warn(LD_CONFIG, "MaxMemInQueues is set to a low value; if your "
"relay doesn't work, this may be the reason why.");
return val;
} else if (! is_server && val < ONE_MEGABYTE * MIN_UNWARNED_CLIENT_MB) {
/* On a client, if it's less than this much, we warn that things
* may go badly. */
log_warn(LD_CONFIG, "MaxMemInQueues is set to a low value; if your "
"client doesn't work, this may be the reason why.");
return val;
} else {
/* The value was fine all along */
return val;