summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2007-11-11 05:36:28 +0000
committerRoger Dingledine <arma@torproject.org>2007-11-11 05:36:28 +0000
commit12e6d8c7f2ec8bc05f0b5270100383d54b16b46c (patch)
tree3578deb6df7456cb49a63d5ae68f267fbc2f8e2b
parent036c72bd2179f43b2b98dbf6a893efd662d5215e (diff)
downloadtor-12e6d8c7f2ec8bc05f0b5270100383d54b16b46c.tar.gz
tor-12e6d8c7f2ec8bc05f0b5270100383d54b16b46c.zip
backport the fixes for bug 549.
svn:r12473
-rw-r--r--ChangeLog2
-rw-r--r--src/or/dns.c8
2 files changed, 6 insertions, 4 deletions
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();