Fix more of bug 997.

Fix refetching of hidden service descriptors when all introduction points
have turned out to not work.
This commit is contained in:
Karsten Loesing 2009-06-13 12:21:58 +02:00
parent 6a32beb877
commit ca8708a9ce
3 changed files with 10 additions and 4 deletions

View File

@ -19,6 +19,8 @@ Changes in version 0.2.2.1-alpha - 2009-??-??
use a cached descriptor no matter how old it is and only fetch a new
one when all introduction points fail. Fix for bug 997. Patch from
Marcus Griep.
- Fix refetching of hidden service descriptors when all introduction
points have turned out to not work. Fixes more of bug 997.
o Deprecated and removed features:
- The controller no longer accepts the old obsolete "addr-mappings/"

View File

@ -447,10 +447,9 @@ directory_get_from_hs_dir(const char *desc_id, const rend_data_t *rend_query)
return 1;
}
/** Start a connection to a hidden service directory to fetch a v2
* rendezvous service descriptor for the base32-encoded service ID
* <b>query</b>.
*/
/** Unless we already have a descriptor for <b>rend_query</b> with at least
* one (possibly) working introduction point in it, start a connection to a
* hidden service directory to fetch a v2 rendezvous service descriptor. */
void
rend_client_refetch_v2_renddesc(const rend_data_t *rend_query)
{

View File

@ -911,6 +911,11 @@ rend_cache_lookup_entry(const char *query, int version, rend_cache_entry_t **e)
}
if (!*e)
return 0;
tor_assert((*e)->parsed && (*e)->parsed->intro_nodes);
/* XXX022 hack for now, to return "not found" if there are no intro
* points remaining. See bug 997. */
if (smartlist_len((*e)->parsed->intro_nodes) == 0)
return 0;
return 1;
}