diff options
author | Roger Dingledine <arma@torproject.org> | 2007-05-13 00:14:48 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2007-05-13 00:14:48 +0000 |
commit | 2ded13ecdc3e102657daa0cc45d4c44602b5e327 (patch) | |
tree | 275a892a6ef067c35eb7862953320cc178d3d953 | |
parent | 3597eaab79adedc07f1fe802a8d4ff22c24bb515 (diff) | |
download | tor-2ded13ecdc3e102657daa0cc45d4c44602b5e327.tar.gz tor-2ded13ecdc3e102657daa0cc45d4c44602b5e327.zip |
backport r10175
svn:r10176
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/or/routerlist.c | 8 |
2 files changed, 11 insertions, 0 deletions
@@ -6,6 +6,9 @@ Changes in version 0.1.2.14 - 2007-0?-?? behavior. (Reported by seeess, fixes bug 425.) - Fix a bug in dirserv_remove_invalid() that would cause authorities to corrupt memory under some really unlikely scenarios. + - 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 bugfixes: - Actually set the purpose correctly for descriptors inserted with diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 92577f074d..3cd450980f 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -4051,6 +4051,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(); @@ -4064,6 +4065,13 @@ update_router_descriptor_cache_downloads(time_t now) * we take this clause out. -RD */ 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) |