From 279e86f3c88b19ae4a65140567151c183def5931 Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Tue, 13 Jun 2006 05:51:28 +0000 Subject: [PATCH] Defense in depth: fix the reachability bug a second way too. Now if we establish a connection with the right digest, regardless of what the addr/port is, and we have pending create cells, use it. svn:r6614 --- src/or/circuitbuild.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 7c09a25f5c..d38de14bb3 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -420,16 +420,8 @@ circuit_n_conn_done(connection_t *or_conn, int status) continue; tor_assert(circ->state == CIRCUIT_STATE_OR_WAIT); if (!circ->n_conn && - circ->n_addr == or_conn->addr && - circ->n_port == or_conn->port) { - if (memcmp(or_conn->identity_digest, circ->n_conn_id_digest, - DIGEST_LEN)) { - log_fn(LOG_PROTOCOL_WARN, LD_CIRC, - "Pending circuit to %s:%d is intended for different digest!", - or_conn->address, or_conn->port); - circuit_mark_for_close(circ, END_CIRC_REASON_OR_IDENTITY); - continue; - } + !memcmp(or_conn->identity_digest, circ->n_conn_id_digest, + DIGEST_LEN)) { if (!status) { /* or_conn failed; close circ */ log_info(LD_CIRC,"or_conn failed. Closing circ."); circuit_mark_for_close(circ, END_CIRC_REASON_OR_CONN_CLOSED);