diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/or/connection_or.c | 7 |
2 files changed, 9 insertions, 2 deletions
@@ -37,6 +37,9 @@ Changes in version 0.2.1.1-alpha - 2008-??-?? Patch from mwenge. Fixes bug 646. - Correctly notify one-hop connections when a circuit build has failed. Possible fix for bug 669. Found by lodger. + - When we choose to abandon a new entry guard because we think our + older ones might be better, close any circuits pending on that + new entry guard connection. Bugfix on 0.1.2.8-beta; found by lodger. o Minor features: - Allow separate log levels to be configured for different logging @@ -46,7 +49,6 @@ Changes in version 0.2.1.1-alpha - 2008-??-?? - Add a malloc_good_size implementation to OpenBSD_malloc_linux.c, to avoid unused RAM in buffer chunks and memory pools. - Downgrade "sslv3 alert handshake failure" message to INFO. - - Only log guard node status when guard node status has changed. - Add a couple of extra warnings to --enable-gcc-warnings for GCC 4.3, and stop using a warning that had become unfixably verbose under GCC 4.3. diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 00217f2dc..6c4484086 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -889,7 +889,12 @@ connection_or_set_state_open(or_connection_t *conn) rep_hist_note_connect_succeeded(conn->identity_digest, now); if (entry_guard_register_connect_status(conn->identity_digest, 1, now) < 0) { - /* pending circs get closed in circuit_about_to_close_connection() */ + /* Close any circuits pending on this conn. We leave it in state + * 'open' though, because it didn't actually *fail* -- we just + * chose not to use it. (Otherwise + * connection_about_to_close_connection() will call a big pile of + * functions to indicate we shouldn't try it again.) */ + circuit_n_conn_done(conn, 0); return -1; } router_set_status(conn->identity_digest, 1); |