If a directory authority is down, skip it when deciding where to get

networkstatus objects or descriptors. Otherwise we keep asking
every 10 seconds forever.
(adapted from r9880)


svn:r10175
This commit is contained in:
Roger Dingledine 2007-05-12 23:22:27 +00:00
parent bfedb4e812
commit 346826d97b
2 changed files with 13 additions and 7 deletions

View File

@ -37,6 +37,11 @@ Changes in version 0.2.0.1-alpha - 2007-??-??
- Fix a bug in dirserv_remove_invalid() that would cause authorities
to corrupt memory under some really unlikely scenarios.
o Major bugfixes:
- If a directory authority is down, skip it when deciding where to get
networkstatus objects or descriptors. Otherwise we keep asking
every 10 seconds forever.
o Minor fixes (resource management):
- Count the number of open sockets separately from the number
of active connection_t objects. This will let us avoid underusing

View File

@ -4317,6 +4317,7 @@ update_router_descriptor_cache_downloads(time_t now)
n_download = 0;
SMARTLIST_FOREACH(networkstatus_list, networkstatus_t *, ns,
{
trusted_dir_server_t *ds;
smartlist_t *dl;
dl = downloadable[ns_sl_idx] = smartlist_create();
download_from[ns_sl_idx] = smartlist_create();
@ -4330,13 +4331,13 @@ update_router_descriptor_cache_downloads(time_t now)
* we take this clause out. -RD */
continue;
}
{ /* XXX temporary hack so I can debug other stuff without bug 384
* filling up my logs. */
trusted_dir_server_t *ds;
ds = router_get_trusteddirserver_by_digest(ns->identity_digest);
if (ds && !ds->is_running)
continue;
}
/* Don't try dirservers that we think are down -- we might have
* just tried them and just marked them as down. */
ds = router_get_trusteddirserver_by_digest(ns->identity_digest);
if (ds && !ds->is_running)
continue;
SMARTLIST_FOREACH(ns->entries, routerstatus_t * , rs,
{
if (!rs->need_to_mirror)