mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
Remove support for now-obsolete consensus methods before 28.
Closes ticket 32695.
This commit is contained in:
parent
e45810113b
commit
441a048a3a
6
changes/ticket32695
Normal file
6
changes/ticket32695
Normal file
@ -0,0 +1,6 @@
|
||||
o Removed features:
|
||||
- We no longer support consensus methods before method 28; these
|
||||
methods were only used by authorities running versions of Tor that
|
||||
are now at end-of-life. In effect, this means that clients and
|
||||
relays, and authorities now assume that authorities will be
|
||||
running version 0.3.5.x or later. Closes ticket 32695.
|
@ -1540,14 +1540,11 @@ networkstatus_compute_consensus(smartlist_t *votes,
|
||||
consensus_method = MAX_SUPPORTED_CONSENSUS_METHOD;
|
||||
}
|
||||
|
||||
if (consensus_method >= MIN_METHOD_FOR_INIT_BW_WEIGHTS_ONE) {
|
||||
{
|
||||
/* It's smarter to initialize these weights to 1, so that later on,
|
||||
* we can't accidentally divide by zero. */
|
||||
G = M = E = D = 1;
|
||||
T = 4;
|
||||
} else {
|
||||
/* ...but originally, they were set to zero. */
|
||||
G = M = E = D = T = 0;
|
||||
}
|
||||
|
||||
/* Compute medians of time-related things, and figure out how many
|
||||
@ -2268,8 +2265,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
|
||||
smartlist_add_strdup(chunks, chosen_version);
|
||||
}
|
||||
smartlist_add_strdup(chunks, "\n");
|
||||
if (chosen_protocol_list &&
|
||||
consensus_method >= MIN_METHOD_FOR_RS_PROTOCOLS) {
|
||||
if (chosen_protocol_list) {
|
||||
smartlist_add_asprintf(chunks, "pr %s\n", chosen_protocol_list);
|
||||
}
|
||||
/* Now the weight line. */
|
||||
@ -3805,13 +3801,6 @@ dirvote_create_microdescriptor(const routerinfo_t *ri, int consensus_method)
|
||||
smartlist_add_asprintf(chunks, "ntor-onion-key %s", kbuf);
|
||||
}
|
||||
|
||||
/* We originally put a lines in the micrdescriptors, but then we worked out
|
||||
* that we needed them in the microdesc consensus. See #20916. */
|
||||
if (consensus_method < MIN_METHOD_FOR_NO_A_LINES_IN_MICRODESC &&
|
||||
!tor_addr_is_null(&ri->ipv6_addr) && ri->ipv6_orport)
|
||||
smartlist_add_asprintf(chunks, "a %s\n",
|
||||
fmt_addrport(&ri->ipv6_addr, ri->ipv6_orport));
|
||||
|
||||
if (family) {
|
||||
if (consensus_method < MIN_METHOD_FOR_CANONICAL_FAMILIES_IN_MICRODESCS) {
|
||||
smartlist_add_asprintf(chunks, "family %s\n", family);
|
||||
@ -3917,8 +3906,7 @@ static const struct consensus_method_range_t {
|
||||
int low;
|
||||
int high;
|
||||
} microdesc_consensus_methods[] = {
|
||||
{MIN_SUPPORTED_CONSENSUS_METHOD, MIN_METHOD_FOR_NO_A_LINES_IN_MICRODESC - 1},
|
||||
{MIN_METHOD_FOR_NO_A_LINES_IN_MICRODESC,
|
||||
{MIN_SUPPORTED_CONSENSUS_METHOD,
|
||||
MIN_METHOD_FOR_CANONICAL_FAMILIES_IN_MICRODESCS - 1},
|
||||
{MIN_METHOD_FOR_CANONICAL_FAMILIES_IN_MICRODESCS,
|
||||
MAX_SUPPORTED_CONSENSUS_METHOD},
|
||||
|
@ -54,31 +54,11 @@
|
||||
#define ROUTERSTATUS_FORMAT_NO_CONSENSUS_METHOD 0
|
||||
|
||||
/** The lowest consensus method that we currently support. */
|
||||
#define MIN_SUPPORTED_CONSENSUS_METHOD 25
|
||||
#define MIN_SUPPORTED_CONSENSUS_METHOD 28
|
||||
|
||||
/** The highest consensus method that we currently support. */
|
||||
#define MAX_SUPPORTED_CONSENSUS_METHOD 29
|
||||
|
||||
/** Lowest consensus method where authorities vote on required/recommended
|
||||
* protocols. */
|
||||
#define MIN_METHOD_FOR_RECOMMENDED_PROTOCOLS 25
|
||||
|
||||
/** Lowest consensus method where authorities add protocols to routerstatus
|
||||
* 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
|
||||
|
||||
/** Lowest consensus method where the microdesc consensus contains relay IPv6
|
||||
* addresses. See #23826 and #20916. */
|
||||
#define MIN_METHOD_FOR_A_LINES_IN_MICRODESC_CONSENSUS 27
|
||||
|
||||
/** Lowest consensus method where microdescriptors do not contain relay IPv6
|
||||
* addresses. See #23828 and #20916. */
|
||||
#define MIN_METHOD_FOR_NO_A_LINES_IN_MICRODESC 28
|
||||
|
||||
/**
|
||||
* Lowest consensus method where microdescriptor lines are put in canonical
|
||||
* form for improved compressibility and ease of storage. See proposal 298.
|
||||
|
@ -50,6 +50,8 @@ routerstatus_format_entry(const routerstatus_t *rs, const char *version,
|
||||
int consensus_method,
|
||||
const vote_routerstatus_t *vrs)
|
||||
{
|
||||
(void) consensus_method;
|
||||
|
||||
char *summary;
|
||||
char *result = NULL;
|
||||
|
||||
@ -78,12 +80,6 @@ routerstatus_format_entry(const routerstatus_t *rs, const char *version,
|
||||
* networkstatus_type_t values, with an additional control port value
|
||||
* added -MP */
|
||||
|
||||
/* V3 microdesc consensuses only have "a" lines in later consensus methods
|
||||
*/
|
||||
if (format == NS_V3_CONSENSUS_MICRODESC &&
|
||||
consensus_method < MIN_METHOD_FOR_A_LINES_IN_MICRODESC_CONSENSUS)
|
||||
goto done;
|
||||
|
||||
/* Possible "a" line. At most one for now. */
|
||||
if (!tor_addr_is_null(&rs->ipv6_addr)) {
|
||||
smartlist_add_asprintf(chunks, "a %s\n",
|
||||
|
@ -1585,6 +1585,7 @@ networkstatus_consensus_is_already_downloading(const char *resource)
|
||||
int
|
||||
networkstatus_consensus_has_ipv6(const or_options_t* options)
|
||||
{
|
||||
(void) options;
|
||||
const networkstatus_t *cons = networkstatus_get_reasonably_live_consensus(
|
||||
approx_time(),
|
||||
usable_consensus_flavor());
|
||||
@ -1594,13 +1595,8 @@ networkstatus_consensus_has_ipv6(const or_options_t* options)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Different flavours of consensus gained IPv6 at different times */
|
||||
if (we_use_microdescriptors_for_circuits(options)) {
|
||||
return
|
||||
cons->consensus_method >= MIN_METHOD_FOR_A_LINES_IN_MICRODESC_CONSENSUS;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
/* All supported consensus methods have IPv6 addresses. */
|
||||
return 1;
|
||||
}
|
||||
|
||||
/** Given two router status entries for the same router identity, return 1 if
|
||||
|
@ -7108,7 +7108,7 @@ test_dir_networkstatus_consensus_has_ipv6(void *arg)
|
||||
mock_options->UseMicrodescriptors = 1;
|
||||
|
||||
mock_networkstatus->consensus_method =
|
||||
MIN_METHOD_FOR_A_LINES_IN_MICRODESC_CONSENSUS;
|
||||
MIN_SUPPORTED_CONSENSUS_METHOD;
|
||||
has_ipv6 = networkstatus_consensus_has_ipv6(get_options());
|
||||
tt_assert(has_ipv6);
|
||||
|
||||
@ -7117,24 +7117,19 @@ test_dir_networkstatus_consensus_has_ipv6(void *arg)
|
||||
tt_assert(has_ipv6);
|
||||
|
||||
mock_networkstatus->consensus_method =
|
||||
MIN_METHOD_FOR_A_LINES_IN_MICRODESC_CONSENSUS + 1;
|
||||
MIN_SUPPORTED_CONSENSUS_METHOD + 1;
|
||||
has_ipv6 = networkstatus_consensus_has_ipv6(get_options());
|
||||
tt_assert(has_ipv6);
|
||||
|
||||
mock_networkstatus->consensus_method =
|
||||
MIN_METHOD_FOR_A_LINES_IN_MICRODESC_CONSENSUS + 20;
|
||||
MIN_SUPPORTED_CONSENSUS_METHOD + 20;
|
||||
has_ipv6 = networkstatus_consensus_has_ipv6(get_options());
|
||||
tt_assert(has_ipv6);
|
||||
|
||||
mock_networkstatus->consensus_method =
|
||||
MIN_METHOD_FOR_A_LINES_IN_MICRODESC_CONSENSUS - 1;
|
||||
has_ipv6 = networkstatus_consensus_has_ipv6(get_options());
|
||||
tt_assert(!has_ipv6);
|
||||
|
||||
/* Test the edge cases */
|
||||
mock_options->UseMicrodescriptors = 1;
|
||||
mock_networkstatus->consensus_method =
|
||||
MIN_METHOD_FOR_A_LINES_IN_MICRODESC_CONSENSUS;
|
||||
MIN_SUPPORTED_CONSENSUS_METHOD;
|
||||
|
||||
/* Reasonably live */
|
||||
mock_networkstatus->valid_until = approx_time() - 60;
|
||||
|
Loading…
Reference in New Issue
Block a user