summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2020-08-11 17:01:49 -0400
committerNick Mathewson <nickm@torproject.org>2020-08-11 17:01:49 -0400
commita02002dc9915d4f26d374f0784c7cbf916a653b0 (patch)
tree6d755f587ab4c4a052e460a0436ed60abcdaf47b /src
parent431dcc42e028e1b56f60131e3e153296ff73c25e (diff)
downloadtor-a02002dc9915d4f26d374f0784c7cbf916a653b0.tar.gz
tor-a02002dc9915d4f26d374f0784c7cbf916a653b0.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/app/config/config.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/app/config/config.c b/src/app/config/config.c
index 8e21d67f23..94971e3bfd 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -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;