aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/148814
-rw-r--r--src/or/dirvote.c5
-rw-r--r--src/or/dirvote.h6
3 files changed, 14 insertions, 1 deletions
diff --git a/changes/14881 b/changes/14881
new file mode 100644
index 0000000000..a8ca9c9c6f
--- /dev/null
+++ b/changes/14881
@@ -0,0 +1,4 @@
+ o Minor bugfixes (consensus weight):
+ - Add new consensus method that initializes bw weights to 1 instead of 0. This
+ prevents a zero weight from making it all the way to the end (happens in
+ small testing networks) and causing an error. Fixes bug 14881.
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index fe664698bc..4a955e35de 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -1367,6 +1367,11 @@ networkstatus_compute_consensus(smartlist_t *votes,
consensus_method = MAX_SUPPORTED_CONSENSUS_METHOD;
}
+ if (consensus_method >= MIN_METHOD_FOR_INIT_BW_WEIGHTS_ONE) {
+ G = M = E = D = 1;
+ T = 4;
+ }
+
/* Compute medians of time-related things, and figure out how many
* routers we might need to talk about. */
{
diff --git a/src/or/dirvote.h b/src/or/dirvote.h
index efd233ef5f..334734654a 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 25
+#define MAX_SUPPORTED_CONSENSUS_METHOD 26
/** Lowest consensus method where microdesc consensuses omit any entry
* with no microdesc. */
@@ -111,6 +111,10 @@
* entries. */
#define MIN_METHOD_FOR_RS_PROTOCOLS 25
+/** Lowest consensus method where authorities initialize bandwidth weights to 1
+ * instead of 0. See #14881 */
+#define MIN_METHOD_FOR_INIT_BW_WEIGHTS_ONE 26
+
/** Default bandwidth to clip unmeasured bandwidths to using method >=
* MIN_METHOD_TO_CLIP_UNMEASURED_BW. (This is not a consensus method; do not
* get confused with the above macros.) */