[tor-commits] [tor/master] router: Authorities add their own IPv6 to trusted dir servers

nickm at torproject.org nickm at torproject.org
Thu Jul 2 13:49:48 UTC 2020


commit 1f58b0ca262f16c76b25c8cb39250f14a1ab4fc1
Author: teor <teor at torproject.org>
Date:   Fri Dec 20 14:31:49 2019 +1000

    router: Authorities add their own IPv6 to trusted dir servers
    
    Authorities currently add themselves to the trusted dir servers list,
    but if they have an IPv6 ORPort, they leave it out.
    
    This commit makes authorities add their own IPv6 ORPort to the trusted
    dir servers list.
    
    Closes ticket 32822.
---
 changes/ticket32822            | 5 +++++
 src/feature/nodelist/dirlist.c | 2 +-
 src/feature/relay/router.c     | 4 +++-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/changes/ticket32822 b/changes/ticket32822
new file mode 100644
index 000000000..ca62f0cc5
--- /dev/null
+++ b/changes/ticket32822
@@ -0,0 +1,5 @@
+  o Minor features (directory authorities, IPv6):
+    - Make authorities add their IPv6 ORPort (if any) to the trusted dir
+      servers list. Authorities currently add themselves to the trusted dir
+      servers list, but they only add their IPv4 address and ports to the list.
+      Closes ticket 32822.
diff --git a/src/feature/nodelist/dirlist.c b/src/feature/nodelist/dirlist.c
index f49d991f9..bd647ab53 100644
--- a/src/feature/nodelist/dirlist.c
+++ b/src/feature/nodelist/dirlist.c
@@ -294,7 +294,7 @@ dir_server_new(int is_authority,
   ent->is_authority = is_authority;
   ent->type = type;
   ent->weight = weight;
-  if (addrport_ipv6) {
+  if (addrport_ipv6 && tor_addr_port_is_valid_ap(addrport_ipv6, 0)) {
     if (tor_addr_family(&addrport_ipv6->addr) != AF_INET6) {
       log_warn(LD_BUG, "Hey, I got a non-ipv6 addr as addrport_ipv6.");
       tor_addr_make_unspec(&ent->ipv6_addr);
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index 5e00e4cb3..57da735e8 100644
--- a/src/feature/relay/router.c
+++ b/src/feature/relay/router.c
@@ -1148,10 +1148,12 @@ init_keys(void)
 
   ds = router_get_trusteddirserver_by_digest(digest);
   if (!ds) {
+    tor_addr_port_t ipv6_orport;
+    router_get_advertised_ipv6_or_ap(options, &ipv6_orport);
     ds = trusted_dir_server_new(options->Nickname, NULL,
                                 router_get_advertised_dir_port(options, 0),
                                 router_get_advertised_or_port(options),
-                                NULL,
+                                &ipv6_orport,
                                 digest,
                                 v3_digest,
                                 type, 0.0);





More information about the tor-commits mailing list