mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-13 06:33:44 +01:00
Decouple routerlist_retry_directory_downloads() from the blob
Instead of having it call update_all_descriptor_downloads and update_networkstatus_downloads directly, we can have it cause them to get rescheduled and called from run_scheduled_events. Closes ticket 16789.
This commit is contained in:
parent
6b26962966
commit
e62518865b
6
changes/decouple_retry_directory
Normal file
6
changes/decouple_retry_directory
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
o Code simplification and refactoring:
|
||||||
|
- Change the function that's called when we need to retry all downloads
|
||||||
|
so that it only reschedules the downloads to happen immediately, rather
|
||||||
|
than launching them all at once itself. This further simplifies
|
||||||
|
Tor's callgraph.
|
||||||
|
|
@ -1280,6 +1280,17 @@ reschedule_descriptor_update_check(void)
|
|||||||
time_to.check_descriptor = 0;
|
time_to.check_descriptor = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update our schedule so that we'll check whether we need to fetch directory
|
||||||
|
* info immediately.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
reschedule_directory_downloads(void)
|
||||||
|
{
|
||||||
|
time_to.download_networkstatus = 0;
|
||||||
|
time_to.try_getting_descriptors = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** Perform regular maintenance tasks. This function gets run once per
|
/** Perform regular maintenance tasks. This function gets run once per
|
||||||
* second by second_elapsed_callback().
|
* second by second_elapsed_callback().
|
||||||
*/
|
*/
|
||||||
|
@ -54,6 +54,7 @@ void ip_address_changed(int at_interface);
|
|||||||
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_descriptor_update_check(void);
|
void reschedule_descriptor_update_check(void);
|
||||||
|
void reschedule_directory_downloads(void);
|
||||||
|
|
||||||
MOCK_DECL(long,get_uptime,(void));
|
MOCK_DECL(long,get_uptime,(void));
|
||||||
|
|
||||||
|
@ -4013,12 +4013,10 @@ update_all_descriptor_downloads(time_t now)
|
|||||||
void
|
void
|
||||||
routerlist_retry_directory_downloads(time_t now)
|
routerlist_retry_directory_downloads(time_t now)
|
||||||
{
|
{
|
||||||
|
(void)now;
|
||||||
router_reset_status_download_failures();
|
router_reset_status_download_failures();
|
||||||
router_reset_descriptor_download_failures();
|
router_reset_descriptor_download_failures();
|
||||||
if (get_options()->DisableNetwork)
|
reschedule_directory_downloads();
|
||||||
return;
|
|
||||||
update_networkstatus_downloads(now);
|
|
||||||
update_all_descriptor_downloads(now);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return true iff <b>router</b> does not permit exit streams.
|
/** Return true iff <b>router</b> does not permit exit streams.
|
||||||
|
Loading…
Reference in New Issue
Block a user