]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
if the network is down, and we try to connect to a conn because we
authorRoger Dingledine <arma@torproject.org>
Tue, 27 Dec 2005 09:25:50 +0000 (09:25 +0000)
committerRoger Dingledine <arma@torproject.org>
Tue, 27 Dec 2005 09:25:50 +0000 (09:25 +0000)
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

src/or/circuituse.c

index 5ac644232611720e154aaec90828bbb660d8423d..d5eca281fb8367c2393bf89db28dbd07d6c237dc 100644 (file)
@@ -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);
     }
   }