aboutsummaryrefslogtreecommitdiff
path: root/src/or/rendcommon.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2005-02-28 22:38:00 +0000
committerNick Mathewson <nickm@torproject.org>2005-02-28 22:38:00 +0000
commit349ee1abea59083b14bddf1470afe9d25d22b43c (patch)
tree951c4b311657beb12eb02aa8be0eaf0b2dd29ca6 /src/or/rendcommon.c
parent331badb6ef05936c9f1a6ff6c3385eedc2180ee0 (diff)
downloadtor-349ee1abea59083b14bddf1470afe9d25d22b43c.tar
tor-349ee1abea59083b14bddf1470afe9d25d22b43c.tar.gz
Clean up rend cache on shutdown
svn:r3714
Diffstat (limited to 'src/or/rendcommon.c')
-rw-r--r--src/or/rendcommon.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index 090b80378..ffe5093ad 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -170,6 +170,22 @@ void rend_cache_init(void)
rend_cache = strmap_new();
}
+static void
+_rend_cache_entry_free(void *p)
+{
+ rend_cache_entry_t *e = p;
+ rend_service_descriptor_free(e->parsed);
+ tor_free(e->desc);
+ tor_free(e);
+}
+
+void
+rend_cache_free_all(void)
+{
+ strmap_free(rend_cache, _rend_cache_entry_free);
+ rend_cache = NULL;
+}
+
/** Removes all old entries from the service descriptor cache.
*/
void rend_cache_clean(void)
@@ -185,9 +201,7 @@ void rend_cache_clean(void)
ent = (rend_cache_entry_t*)val;
if (ent->parsed->timestamp < cutoff) {
iter = strmap_iter_next_rmv(rend_cache, iter);
- rend_service_descriptor_free(ent->parsed);
- tor_free(ent->desc);
- tor_free(ent);
+ _rend_cache_entry_free(ent);
} else {
iter = strmap_iter_next(rend_cache, iter);
}