mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Split choosing a regular directory into its own fn
This commit is contained in:
parent
68dae4cf35
commit
a7c6b4ab91
@ -334,6 +334,24 @@ directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose,
|
||||
}
|
||||
}
|
||||
|
||||
/**DOCDOC*/
|
||||
static const routerstatus_t *
|
||||
directory_pick_generic_dirserver(dirinfo_type_t type, int pds_flags,
|
||||
uint8_t dir_purpose)
|
||||
{
|
||||
const routerstatus_t *rs;
|
||||
|
||||
/* anybody with a non-zero dirport will do */
|
||||
rs = router_pick_directory_server(type, pds_flags);
|
||||
if (!rs) {
|
||||
log_info(LD_DIR, "No router found for %s; falling back to "
|
||||
"dirserver list.", dir_conn_purpose_to_string(dir_purpose));
|
||||
rs = router_pick_fallback_dirserver(type, pds_flags);
|
||||
}
|
||||
|
||||
return rs;
|
||||
}
|
||||
|
||||
/** Start a connection to a random running directory server, using
|
||||
* connection purpose <b>dir_purpose</b>, intending to fetch descriptors
|
||||
* of purpose <b>router_purpose</b>, and requesting <b>resource</b>.
|
||||
@ -469,13 +487,12 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose,
|
||||
}
|
||||
}
|
||||
if (!rs && type != BRIDGE_DIRINFO) {
|
||||
/* anybody with a non-zero dirport will do */
|
||||
rs = router_pick_directory_server(type, pds_flags);
|
||||
/* */
|
||||
rs = directory_pick_generic_dirserver(type, pds_flags,
|
||||
dir_purpose);
|
||||
if (!rs) {
|
||||
log_info(LD_DIR, "No router found for %s; falling back to "
|
||||
"dirserver list.", dir_conn_purpose_to_string(dir_purpose));
|
||||
rs = router_pick_fallback_dirserver(type, pds_flags);
|
||||
if (!rs)
|
||||
/*XXXX024 I'm pretty sure this can never do any good, since
|
||||
* rs isn't set. */
|
||||
get_via_tor = 1; /* last resort: try routing it via Tor */
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user