From: Roger Dingledine Date: Thu, 15 Nov 2007 11:14:08 +0000 (+0000) Subject: Fix a small memory leak whenever we decide against using a X-Git-Tag: tor-0.2.0.12-alpha~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=06a1e4124f1ef048bd10a5d296b9380b995f0de8;p=thirdparty%2Ftor.git Fix a small memory leak whenever we decide against using a newly picked entry guard. Reported by Mike Perry. svn:r12506 --- 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) {