GitLab is used only for code review, issue tracking and project management. Canonical locations for source code are still https://gitweb.torproject.org/ https://git.torproject.org/ and git-rw.torproject.org.

Commit a5538a36 authored by David Goulet's avatar David Goulet 🐋 Committed by Nick Mathewson

relay: Look at our cache when looking for an IP change

Regularly, tor looks if its IP has changed. It does the entire auto discovery
process again. However, it is possible that it does not find anything.

Instead of thinking the IP changed to an unknown address, look at our cache
and see if that value has changed.

The reason for this is because if tor gets its address as a suggestion from a
directory authority, it is because the auto discovery failed and thus that
address should be consider for the IP change check.

Related to #40071Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
parent 4b981407
......@@ -2679,8 +2679,21 @@ check_descriptor_ipaddress_changed(time_t now)
/* Ignore returned value because we want to notice not only an address
* change but also if an address is lost (current == UNSPEC). */
find_my_address(get_options(), family, LOG_INFO, &current, &method,
&hostname);
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);
}
/* 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
* none now, we consider this an IP change since it appears the relay lost
* its address. */
if (!tor_addr_eq(previous, &current)) {
char *source;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment