From 280e4dccb49a55f675a1f3549ea52849bd5ea8ad Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Mon, 12 Jul 2004 18:19:55 +0000 Subject: [PATCH] if connecting to an OR fails immediately, mark it as down svn:r2029 --- trunk/src/or/connection.c | 4 +++- trunk/src/or/connection_or.c | 1 + trunk/src/or/routerlist.c | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/trunk/src/or/connection.c b/trunk/src/or/connection.c index 90c8197c46..578466baed 100644 --- a/trunk/src/or/connection.c +++ b/trunk/src/or/connection.c @@ -829,7 +829,9 @@ int connection_handle_write(connection_t *conn) { log_fn(LOG_DEBUG,"in-progress connect failed. Removing."); connection_close_immediate(conn); connection_mark_for_close(conn); - /* Previously we tested conn->nickname; is this right? */ + /* it's safe to pass OPs to router_mark_as_down(), since it just + * ignores unrecognized routers + */ if (conn->type == CONN_TYPE_OR) router_mark_as_down(conn->identity_digest); return -1; diff --git a/trunk/src/or/connection_or.c b/trunk/src/or/connection_or.c index 667a82d92b..87e2f9df2a 100644 --- a/trunk/src/or/connection_or.c +++ b/trunk/src/or/connection_or.c @@ -177,6 +177,7 @@ connection_t *connection_or_connect(uint32_t addr, uint16_t port, switch(connection_connect(conn, conn->address, addr, port)) { case -1: + router_mark_as_down(conn->identity_digest); connection_free(conn); return NULL; case 0: diff --git a/trunk/src/or/routerlist.c b/trunk/src/or/routerlist.c index 1bd21e4411..7874b10755 100644 --- a/trunk/src/or/routerlist.c +++ b/trunk/src/or/routerlist.c @@ -354,7 +354,7 @@ void routerlist_free(routerlist_t *rl) tor_free(rl); } -/** Mark the router named nickname as non-running in our routerlist. */ +/** Mark the router with ID digest as non-running in our routerlist. */ void router_mark_as_down(const char *digest) { routerinfo_t *router; tor_assert(digest);