diff --git a/changes/bug14334 b/changes/bug14334 new file mode 100644 index 0000000000..c53781ecf2 --- /dev/null +++ b/changes/bug14334 @@ -0,0 +1,4 @@ + o Minor bugfixes (guards): + - Don't mark guards as unreachable if connection_connect() fails. That + function fails for local reasons, so it shouldn't reveal anything about + the status of the guard. Fixes bug #14334; bugfix on 0.2.3.10-alpha. diff --git a/src/or/connection_or.c b/src/or/connection_or.c index ea49bdba77..369ed202e1 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -1281,11 +1281,9 @@ connection_or_connect, (const tor_addr_t *_addr, uint16_t port, switch (connection_connect(TO_CONN(conn), conn->base_.address, &addr, port, &socket_error)) { case -1: - /* If the connection failed immediately, and we're using - * a proxy, our proxy is down. Don't blame the Tor server. */ - if (conn->base_.proxy_state == PROXY_INFANT) - entry_guard_register_connect_status(conn->identity_digest, - 0, 1, time(NULL)); + /* We failed to establish a connection probably because of a local + * error. No need to blame the guard in this case. Notify the networking + * system of this failure. */ connection_or_connect_failed(conn, errno_to_orconn_end_reason(socket_error), tor_socket_strerror(socket_error));