Loading src/or/directory.c +8 −5 Original line number Diff line number Diff line Loading @@ -425,14 +425,17 @@ directory_pick_generic_dirserver(dirinfo_type_t type, int pds_flags, * Use <b>pds_flags</b> as arguments to router_pick_directory_server() * or router_pick_trusteddirserver(). */ MOCK_IMPL(void, directory_get_from_dirserver, (uint8_t dir_purpose, MOCK_IMPL(void, directory_get_from_dirserver, ( uint8_t dir_purpose, uint8_t router_purpose, const char *resource, int pds_flags)) int pds_flags, download_want_authority_t want_authority)) { const routerstatus_t *rs = NULL; const or_options_t *options = get_options(); int prefer_authority = directory_fetches_from_authorities(options); int prefer_authority = (directory_fetches_from_authorities(options) || want_authority == DL_WANT_AUTHORITY); int require_authority = 0; int get_via_tor = purpose_needs_anonymity(dir_purpose, router_purpose); dirinfo_type_t type = dir_fetch_type(dir_purpose, router_purpose, resource); Loading src/or/directory.h +6 −4 Original line number Diff line number Diff line Loading @@ -16,10 +16,12 @@ int directories_have_accepted_server_descriptor(void); void directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose, dirinfo_type_t type, const char *payload, size_t payload_len, size_t extrainfo_len); MOCK_DECL(void, directory_get_from_dirserver, (uint8_t dir_purpose, MOCK_DECL(void, directory_get_from_dirserver, ( uint8_t dir_purpose, uint8_t router_purpose, const char *resource, int pds_flags)); int pds_flags, download_want_authority_t want_authority)); void directory_get_from_all_authorities(uint8_t dir_purpose, uint8_t router_purpose, const char *resource); Loading src/or/entrynodes.c +1 −1 Original line number Diff line number Diff line Loading @@ -2205,7 +2205,7 @@ fetch_bridge_descriptors(const or_options_t *options, time_t now) log_info(LD_DIR, "Fetching bridge info '%s' from bridge authority.", resource); directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC, ROUTER_PURPOSE_BRIDGE, resource, 0); ROUTER_PURPOSE_BRIDGE, resource, 0, DL_WANT_AUTHORITY); } } SMARTLIST_FOREACH_END(bridge); Loading src/or/or.h +9 −0 Original line number Diff line number Diff line Loading @@ -1955,6 +1955,15 @@ typedef enum { } download_schedule_t; #define download_schedule_bitfield_t ENUM_BF(download_schedule_t) /** Enumeration: do we want to try an authority or a fallback directory * mirror for our download? */ typedef enum { DL_WANT_FALLBACK = 0, DL_WANT_AUTHORITY = 1, } download_want_authority_t; #define download_want_authority_bitfield_t \ ENUM_BF(download_want_authority_t) /** Information about our plans for retrying downloads for a downloadable * object. */ typedef struct download_status_t { Loading src/or/routerlist.c +8 −4 Original line number Diff line number Diff line Loading @@ -897,8 +897,10 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now) if (smartlist_len(fps) > 1) { resource = smartlist_join_strings(fps, "", 0, NULL); /* XXX - do we want certs from authorities or mirrors? - teor */ directory_get_from_dirserver(DIR_PURPOSE_FETCH_CERTIFICATE, 0, resource, PDS_RETRY_IF_NO_SERVERS); resource, PDS_RETRY_IF_NO_SERVERS, DL_WANT_FALLBACK); tor_free(resource); } /* else we didn't add any: they were all pending */ Loading Loading @@ -941,8 +943,10 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now) if (smartlist_len(fp_pairs) > 1) { resource = smartlist_join_strings(fp_pairs, "", 0, NULL); /* XXX - do we want certs from authorities or mirrors? - teor */ directory_get_from_dirserver(DIR_PURPOSE_FETCH_CERTIFICATE, 0, resource, PDS_RETRY_IF_NO_SERVERS); resource, PDS_RETRY_IF_NO_SERVERS, DL_WANT_FALLBACK); tor_free(resource); } /* else they were all pending */ Loading Loading @@ -4383,7 +4387,7 @@ MOCK_IMPL(STATIC void, initiate_descriptor_downloads, resource, NULL, 0, 0); } else { directory_get_from_dirserver(purpose, ROUTER_PURPOSE_GENERAL, resource, pds_flags); pds_flags, DL_WANT_FALLBACK); } tor_free(resource); } Loading Loading @@ -4667,7 +4671,7 @@ launch_dummy_descriptor_download_as_needed(time_t now, last_dummy_download = now; directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC, ROUTER_PURPOSE_GENERAL, "authority.z", PDS_RETRY_IF_NO_SERVERS); PDS_RETRY_IF_NO_SERVERS, DL_WANT_FALLBACK); } } Loading Loading
src/or/directory.c +8 −5 Original line number Diff line number Diff line Loading @@ -425,14 +425,17 @@ directory_pick_generic_dirserver(dirinfo_type_t type, int pds_flags, * Use <b>pds_flags</b> as arguments to router_pick_directory_server() * or router_pick_trusteddirserver(). */ MOCK_IMPL(void, directory_get_from_dirserver, (uint8_t dir_purpose, MOCK_IMPL(void, directory_get_from_dirserver, ( uint8_t dir_purpose, uint8_t router_purpose, const char *resource, int pds_flags)) int pds_flags, download_want_authority_t want_authority)) { const routerstatus_t *rs = NULL; const or_options_t *options = get_options(); int prefer_authority = directory_fetches_from_authorities(options); int prefer_authority = (directory_fetches_from_authorities(options) || want_authority == DL_WANT_AUTHORITY); int require_authority = 0; int get_via_tor = purpose_needs_anonymity(dir_purpose, router_purpose); dirinfo_type_t type = dir_fetch_type(dir_purpose, router_purpose, resource); Loading
src/or/directory.h +6 −4 Original line number Diff line number Diff line Loading @@ -16,10 +16,12 @@ int directories_have_accepted_server_descriptor(void); void directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose, dirinfo_type_t type, const char *payload, size_t payload_len, size_t extrainfo_len); MOCK_DECL(void, directory_get_from_dirserver, (uint8_t dir_purpose, MOCK_DECL(void, directory_get_from_dirserver, ( uint8_t dir_purpose, uint8_t router_purpose, const char *resource, int pds_flags)); int pds_flags, download_want_authority_t want_authority)); void directory_get_from_all_authorities(uint8_t dir_purpose, uint8_t router_purpose, const char *resource); Loading
src/or/entrynodes.c +1 −1 Original line number Diff line number Diff line Loading @@ -2205,7 +2205,7 @@ fetch_bridge_descriptors(const or_options_t *options, time_t now) log_info(LD_DIR, "Fetching bridge info '%s' from bridge authority.", resource); directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC, ROUTER_PURPOSE_BRIDGE, resource, 0); ROUTER_PURPOSE_BRIDGE, resource, 0, DL_WANT_AUTHORITY); } } SMARTLIST_FOREACH_END(bridge); Loading
src/or/or.h +9 −0 Original line number Diff line number Diff line Loading @@ -1955,6 +1955,15 @@ typedef enum { } download_schedule_t; #define download_schedule_bitfield_t ENUM_BF(download_schedule_t) /** Enumeration: do we want to try an authority or a fallback directory * mirror for our download? */ typedef enum { DL_WANT_FALLBACK = 0, DL_WANT_AUTHORITY = 1, } download_want_authority_t; #define download_want_authority_bitfield_t \ ENUM_BF(download_want_authority_t) /** Information about our plans for retrying downloads for a downloadable * object. */ typedef struct download_status_t { Loading
src/or/routerlist.c +8 −4 Original line number Diff line number Diff line Loading @@ -897,8 +897,10 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now) if (smartlist_len(fps) > 1) { resource = smartlist_join_strings(fps, "", 0, NULL); /* XXX - do we want certs from authorities or mirrors? - teor */ directory_get_from_dirserver(DIR_PURPOSE_FETCH_CERTIFICATE, 0, resource, PDS_RETRY_IF_NO_SERVERS); resource, PDS_RETRY_IF_NO_SERVERS, DL_WANT_FALLBACK); tor_free(resource); } /* else we didn't add any: they were all pending */ Loading Loading @@ -941,8 +943,10 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now) if (smartlist_len(fp_pairs) > 1) { resource = smartlist_join_strings(fp_pairs, "", 0, NULL); /* XXX - do we want certs from authorities or mirrors? - teor */ directory_get_from_dirserver(DIR_PURPOSE_FETCH_CERTIFICATE, 0, resource, PDS_RETRY_IF_NO_SERVERS); resource, PDS_RETRY_IF_NO_SERVERS, DL_WANT_FALLBACK); tor_free(resource); } /* else they were all pending */ Loading Loading @@ -4383,7 +4387,7 @@ MOCK_IMPL(STATIC void, initiate_descriptor_downloads, resource, NULL, 0, 0); } else { directory_get_from_dirserver(purpose, ROUTER_PURPOSE_GENERAL, resource, pds_flags); pds_flags, DL_WANT_FALLBACK); } tor_free(resource); } Loading Loading @@ -4667,7 +4671,7 @@ launch_dummy_descriptor_download_as_needed(time_t now, last_dummy_download = now; directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC, ROUTER_PURPOSE_GENERAL, "authority.z", PDS_RETRY_IF_NO_SERVERS); PDS_RETRY_IF_NO_SERVERS, DL_WANT_FALLBACK); } } Loading