hop=circ->cpath;
do {
s = buf + strlen(buf);
- router = router_get_by_addr_port(hop->addr,hop->port);
+ router = router_get_by_digest(hop->identity_digest);
if(router) {
snprintf(s, sizeof(buf) - (s - buf), "%s(%s) ",
router->nickname, states[hop->state]);
prev_nickname = options.Nickname;
}
do {
- router = router_get_by_addr_port(hop->addr,hop->port);
+ router = router_get_by_digest(hop->identity_digest);
if (router) {
if (prev_nickname) {
if (hop->state == CPATH_STATE_OPEN)
log_fn(LOG_DEBUG,"Looking for firsthop '%s:%u'",
firsthop->address,firsthop->or_port);
- n_conn = connection_twin_get_by_addr_port(firsthop->addr,firsthop->or_port);
+ n_conn = connection_get_by_identity_digest(firsthop->identity_digest,
+ CONN_TYPE_OR);
if(!n_conn || n_conn->state != OR_CONN_STATE_OPEN) { /* not currently connected */
circ->n_addr = firsthop->addr;
circ->n_port = firsthop->or_port;
goto next_i_loop;
}
if(options.ORPort) {
- conn = connection_exact_get_by_addr_port(r->addr, r->or_port);
+ conn = connection_get_by_identity_digest(r->identity_digest,
+ CONN_TYPE_OR);
if(!conn || conn->type != CONN_TYPE_OR || conn->state != OR_CONN_STATE_OPEN) {
log_fn(LOG_DEBUG,"Nope, %d is not connected.",i);
goto next_i_loop;
remove_twins_from_smartlist(sl,router_get_by_nickname(state->chosen_exit));
remove_twins_from_smartlist(sl,router_get_my_routerinfo());
for (i = 0, cpath = *head_ptr; i < cur_len; ++i, cpath=cpath->next) {
- r = router_get_by_addr_port(cpath->addr, cpath->port);
+ r = router_get_by_digest(cpath->identity_digest);
tor_assert(r);
remove_twins_from_smartlist(sl,r);
}
/* this function should never be called if we're already connected to router, but */
/* check first to be sure */
- conn = connection_exact_get_by_addr_port(router->addr,router->or_port);
+ conn = connection_get_by_identity_digest(router->identity_digest,
+ CONN_TYPE_OR);
if(conn)
return conn;
return -1;
}
} else {
- if((c=connection_exact_get_by_addr_port(router->addr,router->or_port))) {
+ if((c=connection_get_by_identity_digest(router->identity_digest, CONN_TYPE_OR))) {
log_fn(LOG_INFO,"Router %s is already connected on fd %d. Dropping fd %d.", router->nickname, c->s, conn->s);
return -1;
}
/* parse out the circ it was talking about */
tag_unpack(buf, &addr, &port, &circ_id);
circ = NULL;
+ /* XXXX This is actually right: we want a specific port here in
+ * case there are multiple connections. */
p_conn = connection_exact_get_by_addr_port(addr,port);
if(p_conn)
circ = circuit_get_by_circ_id_conn(circ_id, p_conn);
router = smartlist_get(rl->routers, i);
if(router_is_me(router))
continue;
- if(!connection_exact_get_by_addr_port(router->addr,router->or_port)) {
+ if(!connection_get_by_identity_digest(router->identity_digest,
+ CONN_TYPE_OR)) {
/* not in the list */
log_fn(LOG_DEBUG,"connecting to OR %s:%u.",router->address,router->or_port);
connection_or_connect(router);