[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] write v3-status-votes file earlier in consensus voting
commit 694f1fe80874b2280717908d10d40b45e9e2cc82
Author: Roger Dingledine <arma@xxxxxxxxxxxxxx>
Date: Wed May 11 17:34:38 2016 -0400
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.
---
changes/feature19036 | 4 ++++
src/or/dirvote.c | 38 ++++++++++++++++++++------------------
2 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/changes/feature19036 b/changes/feature19036
new file mode 100644
index 0000000..98bcfca
--- /dev/null
+++ b/changes/feature19036
@@ -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.
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index 9854af7..11b4fd1 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -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;
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits