From 0cdd5a79002166e8eb88929dcbc6b87c00292be5 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 15 Aug 2023 10:12:25 -0400 Subject: [PATCH] Implement proposal 301-dont-vote-on-package-fingerprints.txt This commit adds a new consensus method which, when present, causes authorities not to consider package fingerprints when computing a consensus. It builds on earlier work which dropped support for putting these lines into the votes. --- changes/prop301 | 6 ++++++ src/feature/dirauth/dirvote.c | 6 +++++- src/feature/dirauth/dirvote.h | 8 +++++++- 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 changes/prop301 diff --git a/changes/prop301 b/changes/prop301 new file mode 100644 index 0000000000..1b270e8cc5 --- /dev/null +++ b/changes/prop301 @@ -0,0 +1,6 @@ + o Removed features (directory authority): + - We include a new consensus method that removes support for + computing "package" lines in consensus documents. This feature was + never used, and support for + including it in our votes was removed in 0.4.2.1-alpha. + Finishes implementation of proposal 301. diff --git a/src/feature/dirauth/dirvote.c b/src/feature/dirauth/dirvote.c index 77148c8725..81d8cffd25 100644 --- a/src/feature/dirauth/dirvote.c +++ b/src/feature/dirauth/dirvote.c @@ -1631,7 +1631,11 @@ networkstatus_compute_consensus(smartlist_t *votes, n_versioning_servers); client_versions = compute_consensus_versions_list(combined_client_versions, n_versioning_clients); - packages = compute_consensus_package_lines(votes); + + if (consensus_method < MIN_METHOD_TO_OMIT_PACKAGE_FINGERPRINTS) + packages = tor_strdup(""); + else + packages = compute_consensus_package_lines(votes); SMARTLIST_FOREACH(combined_server_versions, char *, cp, tor_free(cp)); SMARTLIST_FOREACH(combined_client_versions, char *, cp, tor_free(cp)); diff --git a/src/feature/dirauth/dirvote.h b/src/feature/dirauth/dirvote.h index ae8d43a6f0..6d02ef3635 100644 --- a/src/feature/dirauth/dirvote.h +++ b/src/feature/dirauth/dirvote.h @@ -53,7 +53,7 @@ #define MIN_SUPPORTED_CONSENSUS_METHOD 28 /** The highest consensus method that we currently support. */ -#define MAX_SUPPORTED_CONSENSUS_METHOD 33 +#define MAX_SUPPORTED_CONSENSUS_METHOD 34 /** * Lowest consensus method where microdescriptor lines are put in canonical @@ -80,6 +80,12 @@ */ #define MIN_METHOD_TO_SUPPRESS_MD_PUBLISHED 33 +/** + * Lowest (supported) consensus method for which we do not include + * any "package" lines. + **/ +#define MIN_METHOD_TO_OMIT_PACKAGE_FINGERPRINTS 34 + /** 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.) */