aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2007-11-15 11:14:08 +0000
committerRoger Dingledine <arma@torproject.org>2007-11-15 11:14:08 +0000
commit06a1e4124f1ef048bd10a5d296b9380b995f0de8 (patch)
tree483378d7b7bb84ca7fd2f0153e0bd0b280992ce0
parent6c6d27186ae76e4166a826e2d939f944aeedaa7d (diff)
downloadtor-06a1e4124f1ef048bd10a5d296b9380b995f0de8.tar.gz
tor-06a1e4124f1ef048bd10a5d296b9380b995f0de8.zip
Fix a small memory leak whenever we decide against using a
newly picked entry guard. Reported by Mike Perry. svn:r12506
-rw-r--r--ChangeLog3
-rw-r--r--src/or/circuitbuild.c6
2 files changed, 6 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index c4c57a8948..60815ed218 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,12 +6,15 @@ Changes in version 0.2.0.12-alpha - 2007-11-??
o Minor bugfixes:
- When we're lacking a consensus, don't try to perform rendezvous
operations. (Bug spotted by Karsten)
+ - Fix a small memory leak whenever we decide against using a
+ newly picked entry guard. Reported by Mike Perry.
o Minor features:
- When we negotiate a v2 OR connection (not yet implemented), accept
RELAY_EARLY cells and turn them into RELAY cells if we've negotiated
a v1 connection. Initial code for proposal 110.
+
Changes in version 0.2.0.11-alpha - 2007-11-12
o Security fixes:
- Exit policies now reject connections that are addressed to a
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 761bcfe6a2..3a86b95b6c 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -2281,7 +2281,7 @@ entry_guard_register_connect_status(const char *digest, int succeeded,
"Removing from the list. %d/%d entry guards usable/new.",
entry->nickname, buf,
num_live_entry_guards()-1, smartlist_len(entry_guards)-1);
- tor_free(entry);
+ entry_guard_free(entry);
smartlist_del_keeporder(entry_guards, idx);
log_entry_guards(LOG_INFO);
changed = 1;
@@ -2291,6 +2291,7 @@ entry_guard_register_connect_status(const char *digest, int succeeded,
entry->unreachable_since = entry->last_attempted = now;
control_event_guard(entry->nickname, entry->identity, "DOWN");
changed = 1;
+ entry->can_retry = 0; /* We gave it an early chance; no good. */
} else {
char tbuf[ISO_TIME_LEN+1];
format_iso_time(tbuf, entry->unreachable_since);
@@ -2298,9 +2299,8 @@ entry_guard_register_connect_status(const char *digest, int succeeded,
"'%s' (%s). It has been unreachable since %s.",
entry->nickname, buf, tbuf);
entry->last_attempted = now;
- }
- if (entry)
entry->can_retry = 0; /* We gave it an early chance; no good. */
+ }
}
if (first_contact) {