Browse Source

prop224: Add a cache free all function

Signed-off-by: David Goulet <dgoulet@torproject.org>
David Goulet 7 years ago
parent
commit
1eed6edf36
3 changed files with 18 additions and 0 deletions
  1. 16 0
      src/or/hs_cache.c
  2. 1 0
      src/or/hs_cache.h
  3. 1 0
      src/or/main.c

+ 16 - 0
src/or/hs_cache.c

@@ -56,6 +56,15 @@ cache_dir_desc_free(hs_cache_dir_descriptor_t *desc)
   tor_free(desc);
 }
 
+/* Helper function: Use by the free all function using the digest256map
+ * interface to cache entries. */
+static void
+cache_dir_desc_free_(void *ptr)
+{
+  hs_cache_dir_descriptor_t *desc = ptr;
+  cache_dir_desc_free(desc);
+}
+
 /* Create a new directory cache descriptor object from a encoded descriptor.
  * On success, return the heap-allocated cache object, otherwise return NULL if
  * we can't decode the descriptor. */
@@ -366,3 +375,10 @@ hs_cache_init(void)
   hs_cache_v3_dir = digest256map_new();
 }
 
+/* Cleanup the hidden service cache subsystem. */
+void
+hs_cache_free_all(void)
+{
+  tor_assert(hs_cache_v3_dir);
+  digest256map_free(hs_cache_v3_dir, cache_dir_desc_free_);
+}

+ 1 - 0
src/or/hs_cache.h

@@ -40,6 +40,7 @@ typedef struct hs_cache_dir_descriptor_t {
 /* Public API */
 
 void hs_cache_init(void);
+void hs_cache_free_all(void);
 void hs_cache_clean_as_dir(time_t now);
 size_t hs_cache_handle_oom(time_t now, size_t min_remove_bytes);
 

+ 1 - 0
src/or/main.c

@@ -2958,6 +2958,7 @@ tor_free_all(int postfork)
   rend_service_free_all();
   rend_cache_free_all();
   rend_service_authorization_free_all();
+  hs_cache_free_all();
   rep_hist_free_all();
   dns_free_all();
   clear_pending_onions();