From: Roger Dingledine Date: Tue, 13 Jun 2006 05:51:28 +0000 (+0000) Subject: Defense in depth: fix the reachability bug a second way too. X-Git-Tag: tor-0.1.1.23~230 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=279e86f3c88b19ae4a65140567151c183def5931;p=thirdparty%2Ftor.git 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 --- 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);