From: Roger Dingledine Date: Tue, 27 Dec 2005 09:25:50 +0000 (+0000) Subject: if the network is down, and we try to connect to a conn because we X-Git-Tag: tor-0.1.1.11-alpha~117 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d2171cb7a4298c71a017cef925c7953092d99c3f;p=thirdparty%2Ftor.git if the network is down, and we try to connect to a conn because we have a circuit in mind, and we timeout (30 seconds) because the network never answers, we were expiring the circuit, but we weren't obsoleting the connection or telling the helper functions. now do that. svn:r5668 --- diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 5ac6442326..d5eca281fb 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -668,12 +668,19 @@ circuit_build_failed(circuit_t *circ) circ->cpath->state != CPATH_STATE_OPEN) { /* We failed at the first hop. If there's an OR connection to blame, blame it. */ + connection_t *n_conn = NULL; if (circ->n_conn) { + n_conn = circ->n_conn; + } else if (circ->state == CIRCUIT_STATE_OR_WAIT) { + /* we have to hunt for it */ + n_conn = connection_or_get_by_identity_digest(circ->n_conn_id_digest); + } + if (n_conn) { info(LD_OR, "Our circuit failed to get a response from the first hop " "(%s:%d). I'm going to try to rotate to a better connection.", - circ->n_conn->address, circ->n_conn->port); - circ->n_conn->is_obsolete = 1; - helper_node_set_status(circ->n_conn->identity_digest, 0); + n_conn->address, n_conn->port); + n_conn->is_obsolete = 1; + helper_node_set_status(n_conn->identity_digest, 0); } }