summaryrefslogtreecommitdiff
path: root/src/or/circuituse.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-11-01 10:28:01 -0400
committerNick Mathewson <nickm@torproject.org>2013-11-01 10:28:01 -0400
commit12dc55f4878d16bfc3fb6789b31494d47df7ccec (patch)
treefc98af22b5c8ec89902f579fba8ffb9e2d3d77fe /src/or/circuituse.c
parentdde41fa1b00151e01e11341903069f5b2f0db1b7 (diff)
parent5de88dda0acda6914bacd1e14c2e037798c5d9d9 (diff)
downloadtor-12dc55f4878d16bfc3fb6789b31494d47df7ccec.tar.gz
tor-12dc55f4878d16bfc3fb6789b31494d47df7ccec.zip
Merge branch 'prop221_squashed_024'
Conflicts: src/or/or.h
Diffstat (limited to 'src/or/circuituse.c')
-rw-r--r--src/or/circuituse.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index f098cd9bbe..cb9e931917 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -1378,10 +1378,11 @@ circuit_build_failed(origin_circuit_t *circ)
failed_at_last_hop = 1;
}
if (circ->cpath &&
- circ->cpath->state != CPATH_STATE_OPEN) {
- /* We failed at the first hop. If there's an OR connection
- * to blame, blame it. Also, avoid this relay for a while, and
- * fail any one-hop directory fetches destined for it. */
+ circ->cpath->state != CPATH_STATE_OPEN &&
+ ! circ->base_.received_destroy) {
+ /* We failed at the first hop for some reason other than a DESTROY cell.
+ * If there's an OR connection to blame, blame it. Also, avoid this relay
+ * for a while, and fail any one-hop directory fetches destined for it. */
const char *n_chan_id = circ->cpath->extend_info->identity_digest;
int already_marked = 0;
if (circ->base_.n_chan) {