Browse Source

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
Alexander Færøy 7 years ago
parent
commit
04682d302a
3 changed files with 15 additions and 2 deletions
  1. 10 0
      src/common/compress.c
  2. 3 0
      src/common/compress.h
  3. 2 2
      src/or/relay.c

+ 10 - 0
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 {

+ 3 - 0
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 {

+ 2 - 2
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) {