diff --git a/ChangeLog b/ChangeLog index 94eacdc3ad..e317c1a277 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ Changes in version 0.1.2.19 - 2007-??-?? o Major bugfixes: - When the clock jumps forward a lot, do not allow the bandwidth buckets to become negative. Fixes Bug 544. + - Fix a memory leak on exit relays; we were leaking a cached_resolve_t + on every successful resolve. Reported by Mike Perry. Changes in version 0.1.2.18 - 2007-10-28 diff --git a/src/or/dns.c b/src/or/dns.c index 0bcd021e93..977943ebe4 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -409,15 +409,15 @@ purge_expired_resolves(time_t now) removed ? removed->address : "NULL", (void*)remove); } tor_assert(removed == resolve); - if (resolve->is_reverse) - tor_free(resolve->result.hostname); - resolve->magic = 0xF0BBF0BB; - tor_free(resolve); } else { /* This should be in state DONE. Make sure it's not in the cache. */ cached_resolve_t *tmp = HT_FIND(cache_map, &cache_root, resolve); tor_assert(tmp != resolve); } + if (resolve->is_reverse) + tor_free(resolve->result.hostname); + resolve->magic = 0xF0BBF0BB; + tor_free(resolve); } assert_cache_ok();