[tor-commits] [tor/master] Stop discarding downloaded full descriptors when using microdescs for circuits

nickm at torproject.org nickm at torproject.org
Fri Dec 2 17:08:42 UTC 2016


commit 04f794489107bab6316d60ade7228d4443beb3a6
Author: teor <teor2345 at gmail.com>
Date:   Wed Nov 30 12:20:28 2016 +1100

    Stop discarding downloaded full descriptors when using microdescs for circuits
    
    This affects clients with FetchUselessDescriptors 1.
    
    It might also cause subtle bugs on directory mirrors and authorities,
    causing them to consider all full descriptors as failed or old.
---
 changes/bug20839    | 5 +++++
 src/or/routerlist.c | 9 +++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/changes/bug20839 b/changes/bug20839
new file mode 100644
index 0000000..c290097
--- /dev/null
+++ b/changes/bug20839
@@ -0,0 +1,5 @@
+  o Minor bugfixes (descriptors):
+    - Correctly recognise downloaded full descriptors as valid, even when
+      using microdescriptors as circuits. This affects clients with
+      FetchUselessDescriptors set, and may affect directory authorities.
+      Fixes bug 20839; bugfix on commit 6083276 in 0.2.3.2-alpha.
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 9d5b74d..9bcca76 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -3896,7 +3896,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
                router_describe(router));
       *msg = "Router descriptor is not referenced by any network-status.";
 
-      /* Only journal this desc if we'll be serving it. */
+      /* Only journal this desc if we want to keep old descriptors */
       if (!from_cache && should_cache_old_descriptors())
         signed_desc_append_to_journal(&router->cache_info,
                                       &routerlist->desc_store);
@@ -4526,13 +4526,14 @@ router_load_extrainfo_from_string(const char *s, const char *eos,
   smartlist_free(extrainfo_list);
 }
 
-/** Return true iff any networkstatus includes a descriptor whose digest
- * is that of <b>desc</b>. */
+/** Return true iff the latest ns-flavored consensus includes a descriptor
+ * whose digest is that of <b>desc</b>. */
 static int
 signed_desc_digest_is_recognized(signed_descriptor_t *desc)
 {
   const routerstatus_t *rs;
-  networkstatus_t *consensus = networkstatus_get_latest_consensus();
+  networkstatus_t *consensus = networkstatus_get_latest_consensus_by_flavor(
+                                                                      FLAV_NS);
 
   if (consensus) {
     rs = networkstatus_vote_find_entry(consensus, desc->identity_digest);





More information about the tor-commits mailing list