diff options
author | David Goulet <dgoulet@torproject.org> | 2021-01-22 10:35:32 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2021-01-27 09:36:17 -0500 |
commit | 2e600019ea32277525c46809244491970869b084 (patch) | |
tree | 6e107a6804a11f54ec339074206d52f4f7b7fea1 /src/feature/relay/router.c | |
parent | b4220a09b71a924e423798c4cf5001c0bdc07f89 (diff) | |
download | tor-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.c | 17 |
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, ¤t, - &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, - ¤t); - } + /* 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, + ¤t); /* 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 |