aboutsummaryrefslogtreecommitdiff
path: root/src/feature/relay/router.c
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2021-01-22 10:35:32 -0500
committerNick Mathewson <nickm@torproject.org>2021-01-27 09:36:17 -0500
commit2e600019ea32277525c46809244491970869b084 (patch)
tree6e107a6804a11f54ec339074206d52f4f7b7fea1 /src/feature/relay/router.c
parentb4220a09b71a924e423798c4cf5001c0bdc07f89 (diff)
downloadtor-2e600019ea32277525c46809244491970869b084.tar.gz
tor-2e600019ea32277525c46809244491970869b084.zip
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@torproject.org>
Diffstat (limited to 'src/feature/relay/router.c')
-rw-r--r--src/feature/relay/router.c17
1 files changed, 5 insertions, 12 deletions
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