Loading changes/ticket33091 0 → 100644 +3 −0 Original line number Diff line number Diff line o Code simplification and refactoring (mainloop): - Simplify the ip_address_changed() function by removing redundant checks. Closes ticket 33091. src/core/mainloop/connection.c +3 −3 Original line number Diff line number Diff line Loading @@ -4970,10 +4970,10 @@ connection_finished_flushing(connection_t *conn) } } /** Called when our attempt to connect() to another server has just * succeeded. /** Called when our attempt to connect() to a server has just 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. */ static int Loading src/core/mainloop/mainloop.c +17 −13 Original line number Diff line number Diff line Loading @@ -2273,18 +2273,23 @@ systemd_watchdog_callback(periodic_timer_t *timer, void *arg) #define UPTIME_CUTOFF_FOR_NEW_BANDWIDTH_TEST (6*60*60) /** Called when our IP address seems to have changed. <b>at_interface</b> * should be true if we detected a change in our interface, and false if we * detected a change in our published address. */ /** 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 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 ip_address_changed(int at_interface) ip_address_changed(int on_client_conn) { const or_options_t *options = get_options(); int server = server_mode(options); int exit_reject_interfaces = (server && options->ExitRelay && options->ExitPolicyRejectLocalInterfaces); if (at_interface) { if (on_client_conn) { if (! server) { /* Okay, change our keys. */ if (init_keys_client() < 0) Loading @@ -2296,14 +2301,13 @@ ip_address_changed(int at_interface) reset_bandwidth_test(); reset_uptime(); router_reset_reachability(); } } /* Exit relays incorporate interface addresses in their exit policies when * ExitPolicyRejectLocalInterfaces is set */ if (exit_reject_interfaces || (server && !at_interface)) { /* 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"); } } dns_servers_relaunch_checks(); } Loading src/core/mainloop/mainloop.h +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ MOCK_DECL(int, connection_count_moribund, (void)); void directory_all_unreachable(time_t now); 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 reset_all_main_loop_timers(void); void reschedule_directory_downloads(void); Loading Loading
changes/ticket33091 0 → 100644 +3 −0 Original line number Diff line number Diff line o Code simplification and refactoring (mainloop): - Simplify the ip_address_changed() function by removing redundant checks. Closes ticket 33091.
src/core/mainloop/connection.c +3 −3 Original line number Diff line number Diff line Loading @@ -4970,10 +4970,10 @@ connection_finished_flushing(connection_t *conn) } } /** Called when our attempt to connect() to another server has just * succeeded. /** Called when our attempt to connect() to a server has just 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. */ static int Loading
src/core/mainloop/mainloop.c +17 −13 Original line number Diff line number Diff line Loading @@ -2273,18 +2273,23 @@ systemd_watchdog_callback(periodic_timer_t *timer, void *arg) #define UPTIME_CUTOFF_FOR_NEW_BANDWIDTH_TEST (6*60*60) /** Called when our IP address seems to have changed. <b>at_interface</b> * should be true if we detected a change in our interface, and false if we * detected a change in our published address. */ /** 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 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 ip_address_changed(int at_interface) ip_address_changed(int on_client_conn) { const or_options_t *options = get_options(); int server = server_mode(options); int exit_reject_interfaces = (server && options->ExitRelay && options->ExitPolicyRejectLocalInterfaces); if (at_interface) { if (on_client_conn) { if (! server) { /* Okay, change our keys. */ if (init_keys_client() < 0) Loading @@ -2296,14 +2301,13 @@ ip_address_changed(int at_interface) reset_bandwidth_test(); reset_uptime(); router_reset_reachability(); } } /* Exit relays incorporate interface addresses in their exit policies when * ExitPolicyRejectLocalInterfaces is set */ if (exit_reject_interfaces || (server && !at_interface)) { /* 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"); } } dns_servers_relaunch_checks(); } Loading
src/core/mainloop/mainloop.h +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ MOCK_DECL(int, connection_count_moribund, (void)); void directory_all_unreachable(time_t now); 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 reset_all_main_loop_timers(void); void reschedule_directory_downloads(void); Loading