[tor-commits] [tor/master] prop224: Update OOM counters when freeing a client descriptor cache object

nickm at torproject.org nickm at torproject.org
Thu Aug 24 19:13:52 UTC 2017


commit 68887fdc5d4ff94cb8e88480e160349007d8a6a5
Author: David Goulet <dgoulet at torproject.org>
Date:   Tue Aug 22 11:27:47 2017 -0400

    prop224: Update OOM counters when freeing a client descriptor cache object
    
    When we free a client descriptor cache object, tell the OOM handler.
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 src/or/hs_cache.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/or/hs_cache.c b/src/or/hs_cache.c
index 28cb4d1bd..e0d89a70e 100644
--- a/src/or/hs_cache.c
+++ b/src/or/hs_cache.c
@@ -335,6 +335,8 @@ remove_v3_desc_as_client(const hs_cache_client_descriptor_t *desc)
 {
   tor_assert(desc);
   digest256map_remove(hs_cache_v3_client, desc->key.pubkey);
+  /* Update cache size with this entry for the OOM handler. */
+  rend_cache_decrement_allocation(cache_get_client_entry_size(desc));
 }
 
 /* Store a given descriptor in our cache. */
@@ -608,7 +610,6 @@ cache_store_as_client(hs_cache_client_descriptor_t *client_desc)
     }
     /* Remove old entry. Make space for the new one! */
     remove_v3_desc_as_client(cache_entry);
-    rend_cache_decrement_allocation(cache_get_client_entry_size(cache_entry));
     cache_client_desc_free(cache_entry);
   }
 
@@ -649,7 +650,8 @@ cache_clean_v3_as_client(time_t now)
     bytes_removed += entry_size;
     /* Entry is not in the cache anymore, destroy it. */
     cache_client_desc_free(entry);
-    /* Update our cache entry allocation size for the OOM. */
+    /* Update our OOM. We didn't use the remove() function because we are in
+     * a loop so we have to explicitely decrement. */
     rend_cache_decrement_allocation(entry_size);
     /* Logging. */
     {





More information about the tor-commits mailing list