diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-02-16 09:48:11 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-02-16 09:48:11 -0500 |
commit | 2bcd264a28e2d6bec1e806e779bf82435c9c7505 (patch) | |
tree | a134a572dd26adf0bef4cf6f2fad56b21c0032b4 /src/or/relay.c | |
parent | 3930ffdf63425c344e14c45cff6780108cfa038b (diff) | |
parent | cb92d47deca15c44dd52cad6fc326520648c632e (diff) | |
download | tor-2bcd264a28e2d6bec1e806e779bf82435c9c7505.tar.gz tor-2bcd264a28e2d6bec1e806e779bf82435c9c7505.zip |
Merge branch 'maint-0.2.9' into maint-0.3.1
Diffstat (limited to 'src/or/relay.c')
-rw-r--r-- | src/or/relay.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/or/relay.c b/src/or/relay.c index a86ae9bc43..7a074d63da 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -2618,22 +2618,32 @@ static time_t last_time_under_memory_pressure = 0; STATIC int cell_queues_check_size(void) { + time_t now = time(NULL); size_t alloc = cell_queues_get_total_allocation(); alloc += buf_get_total_allocation(); alloc += tor_compress_get_total_allocation(); const size_t rend_cache_total = rend_cache_get_total_allocation(); alloc += rend_cache_total; + const size_t geoip_client_cache_total = + geoip_client_cache_total_allocation(); + alloc += geoip_client_cache_total; if (alloc >= get_options()->MaxMemInQueues_low_threshold) { last_time_under_memory_pressure = approx_time(); if (alloc >= get_options()->MaxMemInQueues) { /* If we're spending over 20% of the memory limit on hidden service - * descriptors, free them until we're down to 10%. - */ + * descriptors, free them until we're down to 10%. Do the same for geoip + * client cache. */ if (rend_cache_total > get_options()->MaxMemInQueues / 5) { const size_t bytes_to_remove = rend_cache_total - (size_t)(get_options()->MaxMemInQueues / 10); alloc -= hs_cache_handle_oom(time(NULL), bytes_to_remove); } + if (geoip_client_cache_total > get_options()->MaxMemInQueues / 5) { + const size_t bytes_to_remove = + geoip_client_cache_total - + (size_t)(get_options()->MaxMemInQueues / 10); + alloc -= geoip_client_cache_handle_oom(now, bytes_to_remove); + } circuits_handle_oom(alloc); return 1; } |