|
@@ -841,9 +841,15 @@ we_want_to_fetch_flavor(const or_options_t *options, int flavor)
|
|
|
* fetching certs before we check whether there is a better one? */
|
|
|
#define DELAY_WHILE_FETCHING_CERTS (20*60)
|
|
|
|
|
|
+/** What is the minimum time we need to have waited fetching certs, before we
|
|
|
+ * increment the consensus download schedule on failure? */
|
|
|
+#define MIN_DELAY_FOR_FETCH_CERT_STATUS_FAILURE (1*60)
|
|
|
+
|
|
|
/* Check if a downloaded consensus flavor should still wait for certificates
|
|
|
- * to download now.
|
|
|
- * If so, return 1. If not, fail dls and return 0. */
|
|
|
+ * to download now. If we decide not to wait, check if enough time has passed
|
|
|
+ * to consider the certificate download failure a separate failure. If so,
|
|
|
+ * fail dls.
|
|
|
+ * If waiting for certificates to download, return 1. If not, return 0. */
|
|
|
static int
|
|
|
check_consensus_waiting_for_certs(int flavor, time_t now,
|
|
|
download_status_t *dls)
|
|
@@ -857,11 +863,14 @@ check_consensus_waiting_for_certs(int flavor, time_t now,
|
|
|
waiting = &consensus_waiting_for_certs[flavor];
|
|
|
if (waiting->consensus) {
|
|
|
/* XXXX make sure this doesn't delay sane downloads. */
|
|
|
- if (waiting->set_at + DELAY_WHILE_FETCHING_CERTS > now) {
|
|
|
+ if (waiting->set_at + DELAY_WHILE_FETCHING_CERTS > now &&
|
|
|
+ waiting->consensus->valid_until > now) {
|
|
|
return 1;
|
|
|
} else {
|
|
|
if (!waiting->dl_failed) {
|
|
|
- download_status_failed(dls, 0);
|
|
|
+ if (waiting->set_at + MIN_DELAY_FOR_FETCH_CERT_STATUS_FAILURE > now) {
|
|
|
+ download_status_failed(dls, 0);
|
|
|
+ }
|
|
|
waiting->dl_failed=1;
|
|
|
}
|
|
|
}
|
|
@@ -906,7 +915,7 @@ update_consensus_networkstatus_downloads(time_t now)
|
|
|
resource = networkstatus_get_flavor_name(i);
|
|
|
|
|
|
/* Check if we already have enough connections in progress */
|
|
|
- if (we_are_bootstrapping) {
|
|
|
+ if (we_are_bootstrapping && use_multi_conn) {
|
|
|
max_in_progress_conns =
|
|
|
options->ClientBootstrapConsensusMaxInProgressTries;
|
|
|
}
|