Take microdesc into account when deciding about preferred OR port.

This commit is contained in:
Linus Nordberg 2012-08-31 23:02:19 +02:00 committed by Nick Mathewson
parent 8b081231b5
commit d827a5495a

View File

@ -888,9 +888,17 @@ node_get_pref_ipv6_orport(const node_t *node, tor_addr_port_t *ap_out)
node_assert_ok(node); node_assert_ok(node);
tor_assert(ap_out); tor_assert(ap_out);
/* We prefer the microdesc over a potential routerstatus here. They
are not being synchronised atm so there might be a chance that
they differ at some point, f.ex. when flipping
UseMicrodescriptors? -LN */
if (node->ri) { if (node->ri) {
tor_addr_copy(&ap_out->addr, &node->ri->ipv6_addr); tor_addr_copy(&ap_out->addr, &node->ri->ipv6_addr);
ap_out->port = node->ri->ipv6_orport; ap_out->port = node->ri->ipv6_orport;
} else if (node->md) {
tor_addr_copy(&ap_out->addr, &node->md->ipv6_addr);
ap_out->port = node->md->ipv6_orport;
} else if (node->rs) { } else if (node->rs) {
tor_addr_copy(&ap_out->addr, &node->rs->ipv6_addr); tor_addr_copy(&ap_out->addr, &node->rs->ipv6_addr);
ap_out->port = node->rs->ipv6_orport; ap_out->port = node->rs->ipv6_orport;