aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Færøy <ahf@torproject.org>2017-04-20 15:33:13 +0200
committerNick Mathewson <nickm@torproject.org>2017-04-25 08:10:09 -0400
commit04682d302aeeb0c2a0d9859bc0c1feee38daf16a (patch)
tree1c47cbb8c7d1bd711951e73ec9ddc61d914db975
parentbe4dc546345831773c2e16fa3dc12749d925aa25 (diff)
downloadtor-04682d302aeeb0c2a0d9859bc0c1feee38daf16a.tar.gz
tor-04682d302aeeb0c2a0d9859bc0c1feee38daf16a.zip
Add `tor_compress_get_total_allocation()` function.
This patch adds the `tor_compress_get_total_allocation()` which returns an approximate number of bytes currently in use by all the different compression backends. See: https://bugs.torproject.org/21662
-rw-r--r--src/common/compress.c10
-rw-r--r--src/common/compress.h3
-rw-r--r--src/or/relay.c4
3 files changed, 15 insertions, 2 deletions
diff --git a/src/common/compress.c b/src/common/compress.c
index dc86be7750..52ff13258a 100644
--- a/src/common/compress.c
+++ b/src/common/compress.c
@@ -154,6 +154,16 @@ detect_compression_method(const char *in, size_t in_len)
}
}
+/** Return the approximate number of bytes allocated for all
+ * supported compression schemas. */
+size_t
+tor_compress_get_total_allocation(void)
+{
+ return tor_zlib_get_total_allocation() +
+ tor_lzma_get_total_allocation() +
+ tor_zstd_get_total_allocation();
+}
+
/** Internal state for an incremental compression/decompression. The body of
* this struct is not exposed. */
struct tor_compress_state_t {
diff --git a/src/common/compress.h b/src/common/compress.h
index 59e7a79061..1fd4325b7e 100644
--- a/src/common/compress.h
+++ b/src/common/compress.h
@@ -51,6 +51,9 @@ tor_compress_memory_level(compression_level_t level);
int
tor_compress_is_compression_bomb(size_t size_in, size_t size_out);
+size_t
+tor_compress_get_total_allocation(void);
+
/** Return values from tor_compress_process; see that function's documentation
* for details. */
typedef enum {
diff --git a/src/or/relay.c b/src/or/relay.c
index 8a98c50372..8524080939 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -54,7 +54,7 @@
#include "circuitbuild.h"
#include "circuitlist.h"
#include "circuituse.h"
-#include "compress_zlib.h"
+#include "compress.h"
#include "config.h"
#include "connection.h"
#include "connection_edge.h"
@@ -2454,7 +2454,7 @@ cell_queues_check_size(void)
{
size_t alloc = cell_queues_get_total_allocation();
alloc += buf_get_total_allocation();
- alloc += tor_zlib_get_total_allocation();
+ alloc += tor_compress_get_total_allocation();
const size_t rend_cache_total = rend_cache_get_total_allocation();
alloc += rend_cache_total;
if (alloc >= get_options()->MaxMemInQueues_low_threshold) {