From: Nick Mathewson Date: Tue, 11 Dec 2012 16:25:36 +0000 (-0500) Subject: Split choosing a regular directory into its own fn X-Git-Tag: tor-0.2.4.8-alpha~19^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a7c6b4ab917085cff23886a97023b92a1c76ca25;p=thirdparty%2Ftor.git Split choosing a regular directory into its own fn --- diff --git a/src/or/directory.c b/src/or/directory.c index 198fb6d40f..769e3d1291 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -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 dir_purpose, intending to fetch descriptors * of purpose router_purpose, and requesting resource. @@ -469,14 +487,13 @@ 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) - get_via_tor = 1; /* last resort: try routing it via Tor */ + /*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 */ } } }