aboutsummaryrefslogtreecommitdiff
path: root/src/or/dirvote.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2007-08-14 16:39:18 +0000
committerNick Mathewson <nickm@torproject.org>2007-08-14 16:39:18 +0000
commit25d2901857f60809a60e8b64cc27df69b2b8d52e (patch)
treec18f434c892b39d9617fb6060ac4684ce47768af /src/or/dirvote.c
parent925394022ab456ea32d6ea382e413886b03a6dbb (diff)
downloadtor-25d2901857f60809a60e8b64cc27df69b2b8d52e.tar.gz
tor-25d2901857f60809a60e8b64cc27df69b2b8d52e.zip
r14015@Kushana: nickm | 2007-08-14 12:39:04 -0400
Try to avoid adding duplicate signatures to a consensus. svn:r11105
Diffstat (limited to 'src/or/dirvote.c')
-rw-r--r--src/or/dirvote.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index d22d73eee5..0846772eda 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -803,8 +803,12 @@ networkstatus_add_signatures_impl(networkstatus_vote_t *target,
networkstatus_check_voter_signature(target, src_voter, cert);
}
}
- /* If this signature is good, then replace and add. */
- if (src_voter->good_signature || !target_voter->signature) {
+ /* XXXX020 We want to add signatures for which we don't have the cert,
+ * pending the arrival of the cert information. But this means we need
+ * to replace them if a better one comes along, and that's not
+ * implemented yet. */
+ /* If this signature is good, then add it. */
+ if (src_voter->good_signature) {
tor_free(target_voter->signature);
target_voter->signature =
tor_memdup(src_voter->signature, src_voter->signature_len);
@@ -1325,6 +1329,9 @@ dirvote_compute_consensus(void)
log_warn(LD_DIR, "Couldn't parse consensus we generated!");
goto err;
}
+ /* 'Check' our own signature, to mark it valid. */
+ networkstatus_check_consensus_signature(consensus);
+
signatures = networkstatus_get_detached_signatures(consensus);
if (!signatures) {
log_warn(LD_DIR, "Couldn't extract signatures.");