Browse Source

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.
Nick Mathewson 8 years ago
parent
commit
60efce445b
4 changed files with 18 additions and 4 deletions
  1. 6 0
      changes/bug17702
  2. 1 1
      src/or/dircollate.c
  3. 7 0
      src/or/dirvote.c
  4. 4 3
      src/or/dirvote.h

+ 6 - 0
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.
+

+ 1 - 1
src/or/dircollate.c

@@ -159,7 +159,7 @@ dircollator_collate(dircollator_t *dc, int consensus_method)
   tor_assert(!dc->is_collated);
   tor_assert(!dc->is_collated);
   dc->all_rsa_sha1_lst = smartlist_new();
   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);
     dircollator_collate_by_rsa(dc);
   else
   else
     dircollator_collate_by_ed25519(dc);
     dircollator_collate_by_ed25519(dc);

+ 7 - 0
src/or/dirvote.c

@@ -558,6 +558,13 @@ compute_consensus_method(smartlist_t *votes)
 static int
 static int
 consensus_method_is_supported(int method)
 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) &&
   return (method >= MIN_SUPPORTED_CONSENSUS_METHOD) &&
     (method <= MAX_SUPPORTED_CONSENSUS_METHOD);
     (method <= MAX_SUPPORTED_CONSENSUS_METHOD);
 }
 }

+ 4 - 3
src/or/dirvote.h

@@ -55,7 +55,7 @@
 #define MIN_SUPPORTED_CONSENSUS_METHOD 13
 #define MIN_SUPPORTED_CONSENSUS_METHOD 13
 
 
 /** The highest consensus method that we currently support. */
 /** 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
 /** Lowest consensus method where microdesc consensuses omit any entry
  * with no microdesc. */
  * with no microdesc. */
@@ -87,11 +87,12 @@
 #define MIN_METHOD_FOR_GUARDFRACTION 20
 #define MIN_METHOD_FOR_GUARDFRACTION 20
 
 
 /** Lowest consensus method where authorities may include an "id" line for
 /** 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
 #define MIN_METHOD_FOR_ED25519_ID_IN_MD 21
 /** Lowest consensus method where authorities vote on ed25519 ids and ensure
 /** Lowest consensus method where authorities vote on ed25519 ids and ensure
  * ed25519 id consistency. */
  * 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 >=
 /** Default bandwidth to clip unmeasured bandwidths to using method >=
  * MIN_METHOD_TO_CLIP_UNMEASURED_BW.  (This is not a consensus method; do not
  * MIN_METHOD_TO_CLIP_UNMEASURED_BW.  (This is not a consensus method; do not