mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
Merge branch 'tor-github/pr/1692'
This commit is contained in:
commit
f07d8a1a92
4 changed files with 24 additions and 17 deletions
3
changes/ticket33091
Normal file
3
changes/ticket33091
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
o Code simplification and refactoring (mainloop):
|
||||||
|
- Simplify the ip_address_changed() function by removing redundant checks.
|
||||||
|
Closes ticket 33091.
|
|
@ -4970,10 +4970,10 @@ connection_finished_flushing(connection_t *conn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Called when our attempt to connect() to another server has just
|
/** Called when our attempt to connect() to a server has just succeeded.
|
||||||
* succeeded.
|
|
||||||
*
|
*
|
||||||
* This function just passes conn to the connection-specific
|
* This function checks if the interface address has changed (clients only),
|
||||||
|
* and then passes conn to the connection-specific
|
||||||
* connection_*_finished_connecting() function.
|
* connection_*_finished_connecting() function.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -2273,18 +2273,23 @@ systemd_watchdog_callback(periodic_timer_t *timer, void *arg)
|
||||||
|
|
||||||
#define UPTIME_CUTOFF_FOR_NEW_BANDWIDTH_TEST (6*60*60)
|
#define UPTIME_CUTOFF_FOR_NEW_BANDWIDTH_TEST (6*60*60)
|
||||||
|
|
||||||
/** Called when our IP address seems to have changed. <b>at_interface</b>
|
/** Called when our IP address seems to have changed. <b>on_client_conn</b>
|
||||||
* should be true if we detected a change in our interface, and false if we
|
* should be true if:
|
||||||
* detected a change in our published address. */
|
* - we detected a change in our interface address, using an outbound
|
||||||
|
* connection, and therefore
|
||||||
|
* - our client TLS keys need to be rotated.
|
||||||
|
* Otherwise, it should be false, and:
|
||||||
|
* - we detected a change in our published address
|
||||||
|
* (using some other method), and therefore
|
||||||
|
* - the published addresses in our descriptor need to change.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
ip_address_changed(int at_interface)
|
ip_address_changed(int on_client_conn)
|
||||||
{
|
{
|
||||||
const or_options_t *options = get_options();
|
const or_options_t *options = get_options();
|
||||||
int server = server_mode(options);
|
int server = server_mode(options);
|
||||||
int exit_reject_interfaces = (server && options->ExitRelay
|
|
||||||
&& options->ExitPolicyRejectLocalInterfaces);
|
|
||||||
|
|
||||||
if (at_interface) {
|
if (on_client_conn) {
|
||||||
if (! server) {
|
if (! server) {
|
||||||
/* Okay, change our keys. */
|
/* Okay, change our keys. */
|
||||||
if (init_keys_client() < 0)
|
if (init_keys_client() < 0)
|
||||||
|
@ -2296,15 +2301,14 @@ ip_address_changed(int at_interface)
|
||||||
reset_bandwidth_test();
|
reset_bandwidth_test();
|
||||||
reset_uptime();
|
reset_uptime();
|
||||||
router_reset_reachability();
|
router_reset_reachability();
|
||||||
|
/* All relays include their IP addresses as their ORPort addresses in
|
||||||
|
* their descriptor.
|
||||||
|
* Exit relays also incorporate interface addresses in their exit
|
||||||
|
* policies, when ExitPolicyRejectLocalInterfaces is set. */
|
||||||
|
mark_my_descriptor_dirty("IP address changed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Exit relays incorporate interface addresses in their exit policies when
|
|
||||||
* ExitPolicyRejectLocalInterfaces is set */
|
|
||||||
if (exit_reject_interfaces || (server && !at_interface)) {
|
|
||||||
mark_my_descriptor_dirty("IP address changed");
|
|
||||||
}
|
|
||||||
|
|
||||||
dns_servers_relaunch_checks();
|
dns_servers_relaunch_checks();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ MOCK_DECL(int, connection_count_moribund, (void));
|
||||||
void directory_all_unreachable(time_t now);
|
void directory_all_unreachable(time_t now);
|
||||||
void directory_info_has_arrived(time_t now, int from_cache, int suppress_logs);
|
void directory_info_has_arrived(time_t now, int from_cache, int suppress_logs);
|
||||||
|
|
||||||
void ip_address_changed(int at_interface);
|
void ip_address_changed(int on_client_conn);
|
||||||
void dns_servers_relaunch_checks(void);
|
void dns_servers_relaunch_checks(void);
|
||||||
void reset_all_main_loop_timers(void);
|
void reset_all_main_loop_timers(void);
|
||||||
void reschedule_directory_downloads(void);
|
void reschedule_directory_downloads(void);
|
||||||
|
|
Loading…
Add table
Reference in a new issue