[tor-commits] [tor/master] Enable ed25519 collator in voting.

nickm at torproject.org nickm at torproject.org
Mon Mar 21 17:27:36 UTC 2016


commit 60efce445b17d4b4153e91527887873812f5599f
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Feb 22 10:07:42 2016 -0500

    Enable ed25519 collator in voting.
    
    Previously, I had left in some debugging code with /*XXX*/ after it,
    which nobody noticed.  Live and learn!  Next time I will use /*XXX
    DO NOT COMMIT*/ or something.
    
    We need to define a new consensus method for this; consensus method
    21 shouldn't actually be used.
    
    Fixes bug 17702; bugfix on 0.2.7.2-alpha.
---
 changes/bug17702    | 6 ++++++
 src/or/dircollate.c | 2 +-
 src/or/dirvote.c    | 7 +++++++
 src/or/dirvote.h    | 7 ++++---
 4 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/changes/bug17702 b/changes/bug17702
new file mode 100644
index 0000000..4fda36f
--- /dev/null
+++ b/changes/bug17702
@@ -0,0 +1,6 @@
+  o Major bugfixes:
+    - Actually enable Ed25519-based directory collation.
+      Previously, the code had been written, but some debugging code that had
+      accidentally been left in the codebase made it stay turned off.
+      Fixes bug 17702; bugfix on 0.2.7.2-alpha.
+
diff --git a/src/or/dircollate.c b/src/or/dircollate.c
index 4c812c4..f56aea8 100644
--- a/src/or/dircollate.c
+++ b/src/or/dircollate.c
@@ -159,7 +159,7 @@ dircollator_collate(dircollator_t *dc, int consensus_method)
   tor_assert(!dc->is_collated);
   dc->all_rsa_sha1_lst = smartlist_new();
 
-  if (consensus_method < MIN_METHOD_FOR_ED25519_ID_VOTING + 10/*XXX*/)
+  if (consensus_method < MIN_METHOD_FOR_ED25519_ID_VOTING)
     dircollator_collate_by_rsa(dc);
   else
     dircollator_collate_by_ed25519(dc);
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index d8e6ee2..be0635d 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -558,6 +558,13 @@ compute_consensus_method(smartlist_t *votes)
 static int
 consensus_method_is_supported(int method)
 {
+  if (method == MIN_METHOD_FOR_ED25519_ID_IN_MD) {
+    /* This method was broken due to buggy code accidently left in
+     * dircollate.c; do not actually use it.
+     */
+    return 0;
+  }
+
   return (method >= MIN_SUPPORTED_CONSENSUS_METHOD) &&
     (method <= MAX_SUPPORTED_CONSENSUS_METHOD);
 }
diff --git a/src/or/dirvote.h b/src/or/dirvote.h
index dca8540..50c2496 100644
--- a/src/or/dirvote.h
+++ b/src/or/dirvote.h
@@ -55,7 +55,7 @@
 #define MIN_SUPPORTED_CONSENSUS_METHOD 13
 
 /** The highest consensus method that we currently support. */
-#define MAX_SUPPORTED_CONSENSUS_METHOD 21
+#define MAX_SUPPORTED_CONSENSUS_METHOD 22
 
 /** Lowest consensus method where microdesc consensuses omit any entry
  * with no microdesc. */
@@ -87,11 +87,12 @@
 #define MIN_METHOD_FOR_GUARDFRACTION 20
 
 /** Lowest consensus method where authorities may include an "id" line for
- * ed25519 identities in microdescriptors. */
+ * ed25519 identities in microdescriptors. (Broken; see
+ * consensus_method_is_supported() for more info.) */
 #define MIN_METHOD_FOR_ED25519_ID_IN_MD 21
 /** Lowest consensus method where authorities vote on ed25519 ids and ensure
  * ed25519 id consistency. */
-#define MIN_METHOD_FOR_ED25519_ID_VOTING MIN_METHOD_FOR_ED25519_ID_IN_MD
+#define MIN_METHOD_FOR_ED25519_ID_VOTING 22
 
 /** Default bandwidth to clip unmeasured bandwidths to using method >=
  * MIN_METHOD_TO_CLIP_UNMEASURED_BW.  (This is not a consensus method; do not





More information about the tor-commits mailing list