aboutsummaryrefslogtreecommitdiff
path: root/src/or/circuit.c
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2004-04-18 07:37:16 +0000
committerRoger Dingledine <arma@torproject.org>2004-04-18 07:37:16 +0000
commit3fa2925a6a6402390dcecf778f7b83494a3b0e13 (patch)
tree7ae6681f0a64ad3f9fd832628b2ce6b69debc2f6 /src/or/circuit.c
parent8d86f8abf59cf758f38a59d589ff662e15020b4f (diff)
downloadtor-3fa2925a6a6402390dcecf778f7b83494a3b0e13.tar
tor-3fa2925a6a6402390dcecf778f7b83494a3b0e13.tar.gz
if an intro circ waiting for an ack dies before getting one, then
count it as a nack svn:r1665
Diffstat (limited to 'src/or/circuit.c')
-rw-r--r--src/or/circuit.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/or/circuit.c b/src/or/circuit.c
index 16fc8bb6e..eafead450 100644
--- a/src/or/circuit.c
+++ b/src/or/circuit.c
@@ -997,6 +997,13 @@ int _circuit_mark_for_close(circuit_t *circ) {
circuit_build_failed(circ); /* take actions if necessary */
circuit_rep_hist_note_result(circ);
}
+ if (circ->purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT) {
+ assert(circ->state == CIRCUIT_STATE_OPEN);
+ /* treat this like getting a nack from it */
+ log_fn(LOG_INFO,"Failed intro circ %s to %s (awaiting ack). Removing from descriptor.",
+ circ->rend_query, circ->build_state->chosen_exit);
+ rend_client_remove_intro_point(circ->build_state->chosen_exit, circ->rend_query);
+ }
if(circ->n_conn)
connection_send_destroy(circ->n_circ_id, circ->n_conn);