소스 검색

Take microdesc into account when deciding about preferred OR port.

Linus Nordberg 13 년 전
부모
커밋
d827a5495a
1개의 변경된 파일8개의 추가작업 그리고 0개의 파일을 삭제
  1. 8 0
      src/or/nodelist.c

+ 8 - 0
src/or/nodelist.c

@@ -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;