Perform cache lookup when FetchHidServDescriptors is set

The FetchHidServDescriptors check was placed before the descriptor cache
lookup which made the option not working because it was never using the
cache in the first place.

Fixes #18704

Patched-by: twim
Signef-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
David Goulet 2016-06-15 09:54:59 -04:00
parent 657067ef9d
commit c7f1b46a10
2 changed files with 11 additions and 6 deletions

5
changes/bug18704 Normal file
View File

@ -0,0 +1,5 @@
o Major bugfixes (hidden service client)
- With FetchHidServDescriptors set to 0, there is no descriptor fetch
(which is intended) but also no descriptor cache lookup was done
making any Tor client not working with this option unset. Resolves
ticket #18704. Patch by "twim"; Bugfix on tor-0.2.0.20-rc.

View File

@ -895,12 +895,6 @@ rend_client_refetch_v2_renddesc(rend_data_t *rend_query)
rend_cache_entry_t *e = NULL;
tor_assert(rend_query);
/* Are we configured to fetch descriptors? */
if (!get_options()->FetchHidServDescriptors) {
log_warn(LD_REND, "We received an onion address for a v2 rendezvous "
"service descriptor, but are not fetching service descriptors.");
return;
}
/* Before fetching, check if we already have a usable descriptor here. */
if (rend_cache_lookup_entry(rend_query->onion_address, -1, &e) == 0 &&
rend_client_any_intro_points_usable(e)) {
@ -908,6 +902,12 @@ rend_client_refetch_v2_renddesc(rend_data_t *rend_query)
"already have a usable descriptor here. Not fetching.");
return;
}
/* Are we configured to fetch descriptors? */
if (!get_options()->FetchHidServDescriptors) {
log_warn(LD_REND, "We received an onion address for a v2 rendezvous "
"service descriptor, but are not fetching service descriptors.");
return;
}
log_debug(LD_REND, "Fetching v2 rendezvous descriptor for service %s",
safe_str_client(rend_query->onion_address));