mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
r14015@Kushana: nickm | 2007-08-14 12:39:04 -0400
Try to avoid adding duplicate signatures to a consensus. svn:r11105
This commit is contained in:
parent
925394022a
commit
25d2901857
@ -1415,7 +1415,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
|
|||||||
if (conn->_base.purpose == DIR_PURPOSE_UPLOAD_SIGNATURES) {
|
if (conn->_base.purpose == DIR_PURPOSE_UPLOAD_SIGNATURES) {
|
||||||
switch (status_code) {
|
switch (status_code) {
|
||||||
case 200: {
|
case 200: {
|
||||||
log_notice(LD_DIR,"Uploaded a signatures to dirserver %s:%d",
|
log_notice(LD_DIR,"Uploaded signature(s) to dirserver %s:%d",
|
||||||
conn->_base.address, conn->_base.port);
|
conn->_base.address, conn->_base.port);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -803,8 +803,12 @@ networkstatus_add_signatures_impl(networkstatus_vote_t *target,
|
|||||||
networkstatus_check_voter_signature(target, src_voter, cert);
|
networkstatus_check_voter_signature(target, src_voter, cert);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* If this signature is good, then replace and add. */
|
/* XXXX020 We want to add signatures for which we don't have the cert,
|
||||||
if (src_voter->good_signature || !target_voter->signature) {
|
* 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);
|
tor_free(target_voter->signature);
|
||||||
target_voter->signature =
|
target_voter->signature =
|
||||||
tor_memdup(src_voter->signature, src_voter->signature_len);
|
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!");
|
log_warn(LD_DIR, "Couldn't parse consensus we generated!");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
/* 'Check' our own signature, to mark it valid. */
|
||||||
|
networkstatus_check_consensus_signature(consensus);
|
||||||
|
|
||||||
signatures = networkstatus_get_detached_signatures(consensus);
|
signatures = networkstatus_get_detached_signatures(consensus);
|
||||||
if (!signatures) {
|
if (!signatures) {
|
||||||
log_warn(LD_DIR, "Couldn't extract signatures.");
|
log_warn(LD_DIR, "Couldn't extract signatures.");
|
||||||
|
@ -2790,6 +2790,9 @@ test_v3_networkstatus(void)
|
|||||||
*/
|
*/
|
||||||
test_eq(2, smartlist_len(dsig2->signatures));
|
test_eq(2, smartlist_len(dsig2->signatures));
|
||||||
|
|
||||||
|
/* Try adding to con2 twice; verify that nothing changes. */
|
||||||
|
test_eq(0, networkstatus_add_detached_signatures(con2, dsig1, &addition2));
|
||||||
|
|
||||||
/* Add to con. */
|
/* Add to con. */
|
||||||
test_eq(2, networkstatus_add_detached_signatures(con, dsig2, &addition2));
|
test_eq(2, networkstatus_add_detached_signatures(con, dsig2, &addition2));
|
||||||
/* Check signatures */
|
/* Check signatures */
|
||||||
|
Loading…
Reference in New Issue
Block a user