prop272: Believe that all routers are Valid and Running.

(We check consensus method when deciding whether to assume a node is
valid.  No need to check the consensus method for Running, since
we will never see a method before 13.)

Closes ticket 20001

g
This commit is contained in:
Nick Mathewson 2016-08-26 14:07:53 -04:00
parent 4b182dfc23
commit 08d2d7c404
2 changed files with 13 additions and 0 deletions

6
changes/ticket20001 Normal file
View File

@ -0,0 +1,6 @@
o Minor features (client, directory):
- Since authorities now omit all routers that lack the Running and Valid
flags, we assume that any authority present in the consensus must
have those flags. Closes ticket 20001; implements part of proposal
272.

View File

@ -2845,6 +2845,7 @@ routerstatus_parse_entry_from_string(memarea_t *area,
} }
} }
} else if (tok) { } else if (tok) {
/* This is a consensus, not a vote. */
int i; int i;
for (i=0; i < tok->n_args; ++i) { for (i=0; i < tok->n_args; ++i) {
if (!strcmp(tok->args[i], "Exit")) if (!strcmp(tok->args[i], "Exit"))
@ -2875,6 +2876,12 @@ routerstatus_parse_entry_from_string(memarea_t *area,
rs->is_v2_dir = 1; rs->is_v2_dir = 1;
} }
} }
/* These are implied true by having been included in a consensus made
* with a given method */
rs->is_flagged_running = 1; /* Starting with consensus method 4. */
if (consensus_method >= MIN_METHOD_FOR_EXCLUDING_INVALID_NODES)
rs->is_valid = 1;
} }
if ((tok = find_opt_by_keyword(tokens, K_V))) { if ((tok = find_opt_by_keyword(tokens, K_V))) {
tor_assert(tok->n_args == 1); tor_assert(tok->n_args == 1);