[tor-commits] [tor/master] Fix redundant authority certificate fetch

nickm at torproject.org nickm at torproject.org
Fri Mar 23 15:24:01 UTC 2018


commit 930b9855819ff80f165930fa4096ef063e802274
Author: Deepesh Pathak <deepshpathak at gmail.com>
Date:   Sun Mar 4 21:13:58 2018 +0530

    Fix redundant authority certificate fetch
    
    - Fixes #24740
    - Fetch certificates only in those cases when consensus are waiting for certs.
---
 changes/ticket24740    |  5 +++++
 src/or/networkstatus.c | 17 ++++++++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/changes/ticket24740 b/changes/ticket24740
new file mode 100644
index 000000000..253cdb65e
--- /dev/null
+++ b/changes/ticket24740
@@ -0,0 +1,5 @@
+  o Minor bugfixes (directory server cert fetch):
+    - Fixed launching a certificate fetch always during the scheduled
+      periodic consensus fetch by fetching only in those cases when
+      consensus are waiting for certs.
+      Fixes bug 24740; bugfix on 0.2.9.1-alpha.
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 87825e719..f7c26149e 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -951,9 +951,12 @@ update_consensus_networkstatus_downloads(time_t now)
         continue;
       }
 
-      /* Check if we're waiting for certificates to download */
-      if (check_consensus_waiting_for_certs(i, now, &consensus_dl_status[i]))
+      /** Check if we're waiting for certificates to download. If we are,
+       * launch download for missing directory authority certificates. */
+      if (check_consensus_waiting_for_certs(i, now, &consensus_dl_status[i])) {
+        update_certificate_downloads(now);
         continue;
+      }
 
       /* Try the requested attempt */
       log_info(LD_DIR, "Launching %s standard networkstatus consensus "
@@ -1230,16 +1233,20 @@ should_delay_dir_fetches(const or_options_t *options, const char **msg_out)
   return 0;
 }
 
-/** Launch requests for networkstatus documents and authority certificates as
- * appropriate. */
+/** Launch requests for networkstatus documents as appropriate. This is called
+ * when we retry all the connections on a SIGHUP and periodically by a Periodic
+ * event which checks whether we want to download any networkstatus documents.
+ */
 void
 update_networkstatus_downloads(time_t now)
 {
   const or_options_t *options = get_options();
   if (should_delay_dir_fetches(options, NULL))
     return;
+  /** Launch a consensus download request, we will wait for the consensus to
+   * download and when it completes we will launch a certificate download
+   * request. */
   update_consensus_networkstatus_downloads(now);
-  update_certificate_downloads(now);
 }
 
 /** Launch requests as appropriate for missing directory authority





More information about the tor-commits mailing list