diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | src/or/dns.c | 15 |
2 files changed, 17 insertions, 0 deletions
@@ -51,6 +51,8 @@ Changes in version 0.1.2.7-alpha - 2007-??-?? bytes.) - Fix as-yet-unused reverse IPv6 lookup code so it sends nybbles in the correct order. + - Free memory held in recently-completed DNS lookup attempts on exit. + This was not a memory leak, but may have been hiding memory leaks. Changes in version 0.1.2.6-alpha - 2007-01-09 diff --git a/src/or/dns.c b/src/or/dns.c index ea1df1ac4..537d5ff80 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -318,6 +318,21 @@ void dns_free_all(void) { cached_resolve_t **ptr, **next, *item; + if (cached_resolve_pqueue) { + SMARTLIST_FOREACH(cached_resolve_pqueue, cached_resolve_t *, res, + { + /* XXXX012 The hach lookups here could be quite slow; remove them + * once we're happy. */ + if (res->state == CACHE_STATE_DONE) { + cached_resolve_t *removed = HT_REMOVE(cache_map, &cache_root, res); + tor_assert(!removed); + _free_cached_resolve(res); + } else { + cached_resolve_t *found = HT_FIND(cache_map, &cache_root, res); + tor_assert(found); + } + }); + } for (ptr = HT_START(cache_map, &cache_root); ptr != NULL; ptr = next) { item = *ptr; next = HT_NEXT_RMV(cache_map, &cache_root, ptr); |