From d72b256f4f0a3a9c90793ea12daae7af74072a16 Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Tue, 22 Apr 2008 18:38:25 +0000 Subject: 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. svn:r14417 --- src/or/connection_or.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/or/connection_or.c') diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 00217f2dcb..6c44840862 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); -- cgit v1.2.3-54-g00ecf