[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] Make directory fail-and-retry logic happen in connection_ab...
- To: or-cvs@xxxxxxxxxxxxx
- Subject: [or-cvs] Make directory fail-and-retry logic happen in connection_ab...
- From: nickm@xxxxxxxx (Nick Mathewson)
- Date: Mon, 3 Jan 2005 14:51:12 -0500 (EST)
- Delivered-to: archiver@seul.org
- Delivered-to: or-cvs-outgoing@seul.org
- Delivered-to: or-cvs@seul.org
- Delivery-date: Mon, 03 Jan 2005 14:51:36 -0500
- Reply-to: or-dev@xxxxxxxxxxxxx
- Sender: owner-or-cvs@xxxxxxxxxxxxx
Update of /home/or/cvsroot/tor/src/or
In directory moria.mit.edu:/tmp/cvs-serv28089/src/or
Modified Files:
connection.c
Log Message:
Make directory fail-and-retry logic happen in connection_about_to_close(); fixes win32 bug.
Index: connection.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/connection.c,v
retrieving revision 1.311
retrieving revision 1.312
diff -u -d -r1.311 -r1.312
--- connection.c 22 Dec 2004 02:55:26 -0000 1.311
+++ connection.c 3 Jan 2005 19:51:10 -0000 1.312
@@ -205,6 +205,17 @@
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 @@
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) &&