mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Clean up rend cache on shutdown
svn:r3714
This commit is contained in:
@@ -1255,6 +1255,7 @@ void tor_free_all(void)
|
||||
free_dir_policy();
|
||||
dirserv_free_all();
|
||||
rend_service_free_all();
|
||||
rend_cache_free_all();
|
||||
rep_hist_free_all();
|
||||
dns_free_all();
|
||||
clear_pending_onions();
|
||||
|
||||
@@ -1586,6 +1586,7 @@ typedef struct rend_cache_entry_t {
|
||||
|
||||
void rend_cache_init(void);
|
||||
void rend_cache_clean(void);
|
||||
void rend_cache_free_all(void);
|
||||
int rend_valid_service_id(const char *query);
|
||||
int rend_cache_lookup_desc(const char *query, const char **desc, size_t *desc_len);
|
||||
int rend_cache_lookup_entry(const char *query, rend_cache_entry_t **entry_out);
|
||||
|
||||
+17
-3
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user