summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2007-10-22 17:31:22 +0000
committerNick Mathewson <nickm@torproject.org>2007-10-22 17:31:22 +0000
commit4bab46d5d797c9a2f88fbf5dfb9ea0d91d384ee7 (patch)
treee07ac54d2e4f4287254ae12d071533c4805518ac
parent25a68907a187eb4272ecd633051267176b5a87ae (diff)
downloadtor-4bab46d5d797c9a2f88fbf5dfb9ea0d91d384ee7.tar.gz
tor-4bab46d5d797c9a2f88fbf5dfb9ea0d91d384ee7.zip
r16041@catbus: nickm | 2007-10-22 13:02:14 -0400
Reattempt certificate downloads immediately on failure, as appropriate. svn:r12106
-rw-r--r--ChangeLog1
-rw-r--r--doc/TODO2
-rw-r--r--src/or/directory.c2
-rw-r--r--src/or/networkstatus.c7
-rw-r--r--src/or/or.h1
5 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c9cf60590f..57905cd01c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -33,6 +33,7 @@ Changes in version 0.2.0.9-alpha - 2007-10-??
- Allow certificates to include an address.
- When we change our directory-cache settings, reschedule all voting
and download operations.
+ - Reattempt certificate downloads immediately on failure, as appropriate.
o Minor features (router descriptor cache):
- If we find a cached-routers file that's been sitting around for more
diff --git a/doc/TODO b/doc/TODO
index 59e44f84a7..17b2e1ea57 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -49,7 +49,7 @@ Things we'd like to do in 0.2.0.x:
of their first test, and then never seeing use.
- Before 0.2.0.9-alpha (for nickm)
- - Retry cert downloads as appropriate
+ o Retry cert downloads as appropriate
- Delay consensus download retry when there's a unverified consensus we're
downloading the certs to check
- But don't delay forever.
diff --git a/src/or/directory.c b/src/or/directory.c
index d5193556ca..a7015bb319 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -592,6 +592,8 @@ connection_dir_download_cert_failed(dir_connection_t *conn, int status)
tor_free(cp);
});
smartlist_free(failed);
+
+ update_certificate_downloads(time(NULL));
}
/** Helper for directory_initiate_command_(router|trusted_dir): send the
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 2735203dc5..a9efd8d92e 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -843,6 +843,13 @@ update_networkstatus_downloads(time_t now)
if (dirserver_mode(options))
update_v2_networkstatus_cache_downloads(now);
update_consensus_networkstatus_downloads(now);
+ update_certificate_downloads(now);
+}
+
+/**DOCDOC */
+void
+update_certificate_downloads(time_t now)
+{
if (consensus_waiting_for_certs)
authority_certs_fetch_missing(consensus_waiting_for_certs, now);
else
diff --git a/src/or/or.h b/src/or/or.h
index 5e7d582ebc..677c30a391 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -3106,6 +3106,7 @@ void networkstatus_consensus_download_failed(int status_code);
void update_consensus_networkstatus_fetch_time(time_t now);
int should_delay_dir_fetches(or_options_t *options);
void update_networkstatus_downloads(time_t now);
+void update_certificate_downloads(time_t now);
networkstatus_v2_t *networkstatus_v2_get_by_digest(const char *digest);
networkstatus_vote_t *networkstatus_get_latest_consensus(void);
networkstatus_vote_t *networkstatus_get_live_consensus(time_t now);