From: David Goulet Date: Tue, 22 Aug 2017 15:30:11 +0000 (-0400) Subject: prop224: Update OOM counters when storing a client descriptor cache object X-Git-Tag: tor-0.3.2.1-alpha~146^2~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e046e6fb4816e118f1bb32bd709b5dce5b729994;p=thirdparty%2Ftor.git prop224: Update OOM counters when storing a client descriptor cache object Signed-off-by: David Goulet --- diff --git a/src/or/hs_cache.c b/src/or/hs_cache.c index e0d89a70e1..6962c5ce44 100644 --- a/src/or/hs_cache.c +++ b/src/or/hs_cache.c @@ -329,6 +329,14 @@ static digest256map_t *hs_cache_v3_client; * objects all related to a specific service. */ static digest256map_t *hs_cache_client_intro_state; +/* Return the size of a client cache entry in bytes. */ +static size_t +cache_get_client_entry_size(const hs_cache_client_descriptor_t *entry) +{ + return sizeof(*entry) + + strlen(entry->encoded_desc) + hs_desc_obj_size(entry->desc); +} + /* Remove a given descriptor from our cache. */ static void remove_v3_desc_as_client(const hs_cache_client_descriptor_t *desc) @@ -345,6 +353,8 @@ store_v3_desc_as_client(hs_cache_client_descriptor_t *desc) { tor_assert(desc); digest256map_set(hs_cache_v3_client, desc->key.pubkey, desc); + /* Update cache size with this entry for the OOM handler. */ + rend_cache_increment_allocation(cache_get_client_entry_size(desc)); } /* Query our cache and return the entry or NULL if not found. */ @@ -355,14 +365,6 @@ lookup_v3_desc_as_client(const uint8_t *key) return digest256map_get(hs_cache_v3_client, key); } -/* Return the size of a client cache entry in bytes. */ -static size_t -cache_get_client_entry_size(const hs_cache_client_descriptor_t *entry) -{ - return sizeof(*entry) + - strlen(entry->encoded_desc) + hs_desc_obj_size(entry->desc); -} - /* Parse the encoded descriptor in desc_str using * service_identity_pk to decrypt it first. * @@ -616,9 +618,6 @@ cache_store_as_client(hs_cache_client_descriptor_t *client_desc) /* Store descriptor in cache */ store_v3_desc_as_client(client_desc); - /* Update cache size with this entry for the OOM handler. */ - rend_cache_increment_allocation(cache_get_client_entry_size(client_desc)); - done: return 0; }