From 5f40d6bf729522e8de88845d145672285ad3800b Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 3 Jan 2005 19:51:10 +0000 Subject: [PATCH] Make directory fail-and-retry logic happen in connection_about_to_close(); fixes win32 bug. svn:r3253 --- src/or/connection.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/or/connection.c b/src/or/connection.c index d6d7bd168d..2a038e29cb 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -205,6 +205,17 @@ void connection_about_to_close_connection(connection_t *conn) switch (conn->type) { case CONN_TYPE_DIR: + if (conn->state == DIR_CONN_STATE_CONNECTING) { + /* it's a directory server and connecting failed: forget about + this router */ + router_mark_as_down(conn->identity_digest); + if (conn->purpose == DIR_PURPOSE_FETCH_DIR && + !all_trusted_directory_servers_down()) { + log_fn(LOG_INFO,"Giving up on dirserver %s; trying another.", + conn->address); + directory_get_from_dirserver(DIR_PURPOSE_FETCH_DIR, NULL); + } + } if (conn->purpose == DIR_PURPOSE_FETCH_RENDDESC) rend_client_desc_fetched(conn->rend_query, 0); break; @@ -854,17 +865,6 @@ loop_again: conn->cpath_layer); } connection_mark_for_close(conn); - if (conn->type == CONN_TYPE_DIR && - conn->state == DIR_CONN_STATE_CONNECTING) { - /* it's a directory server and connecting failed: forget about this router */ - /* XXX I suspect pollerr may make Windows not get to this point. :( */ - router_mark_as_down(conn->identity_digest); - if (conn->purpose == DIR_PURPOSE_FETCH_DIR && - !all_trusted_directory_servers_down()) { - log_fn(LOG_INFO,"Giving up on dirserver %s; trying another.", conn->address); - directory_get_from_dirserver(DIR_PURPOSE_FETCH_DIR, NULL); - } - } return -1; } if (CONN_IS_EDGE(conn) &&