From 98e59e7eb847f1e1f2c17a3be29fea9d23266fff Mon Sep 17 00:00:00 2001 From: Sree Harsha Totakura Date: Wed, 12 Feb 2014 10:22:35 +0000 Subject: - Cleanup cache items after removing from the hashmap. --- src/testbed/gnunet-service-testbed_cache.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/testbed/gnunet-service-testbed_cache.c') diff --git a/src/testbed/gnunet-service-testbed_cache.c b/src/testbed/gnunet-service-testbed_cache.c index 070aeefa5..32f63f3e3 100644 --- a/src/testbed/gnunet-service-testbed_cache.c +++ b/src/testbed/gnunet-service-testbed_cache.c @@ -111,6 +111,20 @@ cache_lookup (unsigned int peer_id) } +/** + * Free the resources occupied by a cache entry + * + * @param entry the cache entry to free + */ +static void +free_entry (struct CacheEntry *entry) +{ + GNUNET_CONTAINER_DLL_remove (cache_head, cache_tail, entry); + GNUNET_free_non_null (entry->hello); + GNUNET_free (entry); +} + + /** * Creates a new cache entry and then puts it into the cache's hashtable. * @@ -131,6 +145,7 @@ add_entry (unsigned int peer_id) GNUNET_CONTAINER_multihashmap32_remove (cache, (uint32_t) entry->peer_id, entry)); + free_entry (entry); } entry = GNUNET_new (struct CacheEntry); entry->peer_id = peer_id; @@ -162,8 +177,7 @@ cache_clear_iterator (void *cls, uint32_t key, void *value) GNUNET_assert (NULL != entry); GNUNET_assert (GNUNET_YES == GNUNET_CONTAINER_multihashmap32_remove (cache, key, value)); - GNUNET_free_non_null (entry->hello); - GNUNET_free (entry); + free_entry (entry); return GNUNET_YES; } -- cgit v1.2.3