Patch: when extending to an unknown router, compare identity to expected identity; not nickname-to-expected identity.

svn:r3937
This commit is contained in:
Nick Mathewson 2005-03-31 23:30:13 +00:00
parent 801d5ef1de
commit e04a82ecaf

View File

@ -495,7 +495,18 @@ connection_tls_finish_handshake(connection_t *conn) {
if (connection_or_nonopen_was_started_here(conn)) { if (connection_or_nonopen_was_started_here(conn)) {
/* I initiated this connection. */ /* I initiated this connection. */
if (strcasecmp(conn->nickname, nickname)) { if (conn->nickname[0] == '$') {
/* I was aiming for a particular digest. Did I get it? */
char d[HEX_DIGEST_LEN+1];
base16_encode(d, HEX_DIGEST_LEN+1, digest_rcvd, DIGEST_LEN);
if (strcasecmp(d,conn->nickname+1)) {
log_fn(LOG_WARN, "Identity key not as expected for router at %s:%d: wanted %s but got %s",
conn->address, conn->port, conn->nickname, d);
control_event_or_conn_status(conn, OR_CONN_EVENT_FAILED);
return -1;
}
} else if (strcasecmp(conn->nickname, nickname)) {
/* I was aiming for a nickname. Did I get it? */
log_fn(authdir_mode(options) ? LOG_WARN : LOG_INFO, log_fn(authdir_mode(options) ? LOG_WARN : LOG_INFO,
"Other side (%s:%d) is '%s', but we tried to connect to '%s'", "Other side (%s:%d) is '%s', but we tried to connect to '%s'",
conn->address, conn->port, nickname, conn->nickname); conn->address, conn->port, nickname, conn->nickname);