diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | src/or/dirserv.c | 14 |
2 files changed, 14 insertions, 2 deletions
@@ -40,6 +40,8 @@ Changes in version 0.2.0.8-alpha - 2007-??-?? gets rid of annoying "400 OK" log messages, which may have been masking some deeper issue. Bugfix on 0.2.0.7-alpha. - When we get a valid consensus, recompute the voting schedule. + - Base the valid-after time of a vote on the consensus voting schedule, + not on our preferred schedule. o Minor bugfixes (performance): - Use a slightly simpler string hashing algorithm (copying Python's diff --git a/src/or/dirserv.c b/src/or/dirserv.c index b2ec0c3cf..08d5318ed 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2017,8 +2017,18 @@ generate_networkstatus_vote_obj(crypto_pk_env_t *private_key, v3_out->is_vote = 1; dirvote_get_preferred_voting_intervals(&timing); v3_out->published = now; - v3_out->valid_after = - dirvote_get_start_of_next_interval(now, timing.vote_interval); + { + networkstatus_vote_t *current_consensus = + networkstatus_get_live_consensus(now); + time_t consensus_interval; + if (current_consensus) + consensus_interval = current_consensus->fresh_until - + current_consensus->valid_after; + else + consensus_interval = timing.vote_interval; + v3_out->valid_after = + dirvote_get_start_of_next_interval(now, consensus_interval); + } v3_out->fresh_until = v3_out->valid_after + timing.vote_interval; v3_out->valid_until = v3_out->valid_after + (timing.vote_interval * timing.n_intervals_valid); |