[tor-commits] [tor/master] relay: Don't trigger an address discovery without an ORPort

nickm at torproject.org nickm at torproject.org
Wed Jan 27 14:36:45 UTC 2021


commit 2e600019ea32277525c46809244491970869b084
Author: David Goulet <dgoulet at torproject.org>
Date:   Fri Jan 22 10:35:32 2021 -0500

    relay: Don't trigger an address discovery without an ORPort
    
    We would before do an address discovery and then a lookup in the cache if not
    found which is now simplified by calling relay_find_addr_to_publish() directly
    which does all those combined.
    
    Furthermore, by doing so, we won't trigger an address discovery every minute
    if we have no ORPort configured for the family.
    
    Fixes #40254
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 changes/ticket40254        |  4 ++++
 src/feature/relay/router.c | 17 +++++------------
 2 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/changes/ticket40254 b/changes/ticket40254
new file mode 100644
index 0000000000..9945e3d3b8
--- /dev/null
+++ b/changes/ticket40254
@@ -0,0 +1,4 @@
+  o Minor bugfixes (relay, configuration):
+    - Don't attempt to discover address (IPv4 or IPv6) if no ORPort for it can
+      be found in the configuration. Fixes bug 40254; bugfix on 0.4.5.1-alpha.
+
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index e5111acd65..4bc71eb486 100644
--- a/src/feature/relay/router.c
+++ b/src/feature/relay/router.c
@@ -2671,18 +2671,11 @@ check_descriptor_ipaddress_changed(time_t now)
       previous = &my_ri->ipv6_addr;
     }
 
-    /* Ignore returned value because we want to notice not only an address
-     * change but also if an address is lost (current == UNSPEC). */
-    bool found = find_my_address(get_options(), family, LOG_INFO, &current,
-                                 &method, &hostname);
-    if (!found) {
-      /* Address was possibly not found because it is simply not configured or
-       * discoverable. Fallback to our cache, which includes any suggestion
-       * sent by a trusted directory server. */
-      found = relay_find_addr_to_publish(get_options(), family,
-                                         RELAY_FIND_ADDR_CACHE_ONLY,
-                                         &current);
-    }
+    /* Attempt to discovery the publishable address for the family which will
+     * actively attempt to discover the address if we are configured with a
+     * port for the family. */
+    relay_find_addr_to_publish(get_options(), family, RELAY_FIND_ADDR_NO_FLAG,
+                               &current);
 
     /* The "current" address might be UNSPEC meaning it was not discovered nor
      * found in our current cache. If we had an address before and we have





More information about the tor-commits mailing list