diff options
author | Nick Mathewson <nickm@torproject.org> | 2005-02-28 22:38:00 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2005-02-28 22:38:00 +0000 |
commit | 349ee1abea59083b14bddf1470afe9d25d22b43c (patch) | |
tree | 951c4b311657beb12eb02aa8be0eaf0b2dd29ca6 /src/or/rendcommon.c | |
parent | 331badb6ef05936c9f1a6ff6c3385eedc2180ee0 (diff) | |
download | tor-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.c | 20 |
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); } |