Purge client HS failure cache on NEWNYM

Signed-off-by: David Goulet <dgoulet@ev0ke.net>
This commit is contained in:
David Goulet 2015-06-25 15:11:40 -04:00 committed by Nick Mathewson
parent ab9a0e3407
commit d06af95ba3
3 changed files with 14 additions and 0 deletions

View File

@ -258,6 +258,18 @@ rend_cache_purge(void)
rend_cache = strmap_new();
}
/** Remove ALL entries from the failure cache. This is also called when a
* NEWNYM signal is received. */
void
rend_cache_failure_purge(void)
{
if (rend_cache_failure) {
log_info(LD_REND, "Purging HS failure cache");
strmap_free(rend_cache_failure, rend_cache_failure_entry_free_);
}
rend_cache_failure = strmap_new();
}
/** Lookup the rend failure cache using a relay identity digest in
* <b>identity</b> and service ID <b>service_id</b>. If found, the intro
* failure is set in <b>intro_entry</b> else it stays untouched. Return 1

View File

@ -68,6 +68,7 @@ size_t rend_cache_get_total_allocation(void);
void rend_cache_intro_failure_note(unsigned int failure,
const uint8_t *identity,
const char *service_id);
void rend_cache_failure_purge(void);
#endif /* TOR_RENDCACHE_H */

View File

@ -38,6 +38,7 @@ void
rend_client_purge_state(void)
{
rend_cache_purge();
rend_cache_failure_purge();
rend_client_cancel_descriptor_fetches();
rend_client_purge_last_hid_serv_requests();
}