mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-23 14:40:51 +01:00
write v3-status-votes file earlier in consensus voting
Make directory authorities write the v3-status-votes file out to disk earlier in the consensus process, so we have the votes even if we abort the consensus process later on. Resolves ticket 19036.
This commit is contained in:
parent
9e44273a4a
commit
694f1fe808
2 changed files with 24 additions and 18 deletions
4
changes/feature19036
Normal file
4
changes/feature19036
Normal file
|
@ -0,0 +1,4 @@
|
|||
o Minor features:
|
||||
- Make directory authorities write the v3-status-votes file out
|
||||
to disk earlier in the consensus process, so we have the votes
|
||||
even if we abort the consensus process below. Resolves ticket 19036.
|
|
@ -3040,6 +3040,26 @@ dirvote_compute_consensuses(void)
|
|||
if (!pending_vote_list)
|
||||
pending_vote_list = smartlist_new();
|
||||
|
||||
/* write the votes out to disk early, so we have them even if we abort
|
||||
* the consensus process below. */
|
||||
votes = smartlist_new();
|
||||
votestrings = smartlist_new();
|
||||
SMARTLIST_FOREACH(pending_vote_list, pending_vote_t *, v,
|
||||
{
|
||||
sized_chunk_t *c = tor_malloc(sizeof(sized_chunk_t));
|
||||
c->bytes = v->vote_body->dir;
|
||||
c->len = v->vote_body->dir_len;
|
||||
smartlist_add(votestrings, c); /* collect strings to write to disk */
|
||||
|
||||
smartlist_add(votes, v->vote); /* collect votes to compute consensus */
|
||||
});
|
||||
|
||||
votefile = get_datadir_fname("v3-status-votes");
|
||||
write_chunks_to_file(votefile, votestrings, 0, 0);
|
||||
tor_free(votefile);
|
||||
SMARTLIST_FOREACH(votestrings, sized_chunk_t *, c, tor_free(c));
|
||||
smartlist_free(votestrings);
|
||||
|
||||
n_voters = get_n_authorities(V3_DIRINFO);
|
||||
n_votes = smartlist_len(pending_vote_list);
|
||||
if (n_votes <= n_voters/2) {
|
||||
|
@ -3066,24 +3086,6 @@ dirvote_compute_consensuses(void)
|
|||
goto err;
|
||||
}
|
||||
|
||||
votes = smartlist_new();
|
||||
votestrings = smartlist_new();
|
||||
SMARTLIST_FOREACH(pending_vote_list, pending_vote_t *, v,
|
||||
{
|
||||
sized_chunk_t *c = tor_malloc(sizeof(sized_chunk_t));
|
||||
c->bytes = v->vote_body->dir;
|
||||
c->len = v->vote_body->dir_len;
|
||||
smartlist_add(votestrings, c); /* collect strings to write to disk */
|
||||
|
||||
smartlist_add(votes, v->vote); /* collect votes to compute consensus */
|
||||
});
|
||||
|
||||
votefile = get_datadir_fname("v3-status-votes");
|
||||
write_chunks_to_file(votefile, votestrings, 0, 0);
|
||||
tor_free(votefile);
|
||||
SMARTLIST_FOREACH(votestrings, sized_chunk_t *, c, tor_free(c));
|
||||
smartlist_free(votestrings);
|
||||
|
||||
{
|
||||
char legacy_dbuf[DIGEST_LEN];
|
||||
crypto_pk_t *legacy_sign=NULL;
|
||||
|
|
Loading…
Add table
Reference in a new issue