summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2007-10-09 17:40:23 +0000
committerNick Mathewson <nickm@torproject.org>2007-10-09 17:40:23 +0000
commitf1d4e3477b9860092f2559513d1cf5319dc2098c (patch)
tree295907778b04133d40c8c0fcb5c174ab9abb6406 /src
parentc7981e669f15eedd4bef64cd6bb99b7a0bd2df4e (diff)
downloadtor-f1d4e3477b9860092f2559513d1cf5319dc2098c.tar.gz
tor-f1d4e3477b9860092f2559513d1cf5319dc2098c.zip
Bugfixes in fetching certificates for a consensus: fetch tor/keys/fp/X, not tor/keys/X. Also, count signatures where no certificate is known as "missing a certificate" not as "unknown authority."
svn:r11805
Diffstat (limited to 'src')
-rw-r--r--src/or/dirvote.c8
-rw-r--r--src/or/routerlist.c8
2 files changed, 11 insertions, 5 deletions
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index 83360588cb..1e19f65534 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -725,11 +725,13 @@ networkstatus_check_consensus_signature(networkstatus_vote_t *consensus,
authority_cert_get_by_digests(voter->identity_digest,
voter->signing_key_digest);
if (! cert) {
- if (!trusteddirserver_get_by_v3_auth_digest(voter->identity_digest))
+ if (!trusteddirserver_get_by_v3_auth_digest(voter->identity_digest)) {
smartlist_add(unrecognized, voter);
- else
+ ++n_unknown;
+ } else {
smartlist_add(need_certs_from, voter);
- ++n_unknown;
+ ++n_missing_key;
+ }
continue;
}
if (networkstatus_check_voter_signature(consensus, voter, cert) < 0) {
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 48ce2f186b..36cd20fccd 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -318,12 +318,16 @@ authority_certs_fetch_missing(networkstatus_vote_t *status)
{
smartlist_t *fps = smartlist_create();
+ smartlist_add(fps, tor_strdup("fp/"));
SMARTLIST_FOREACH(missing_digests, const char *, d, {
- char *fp = tor_malloc(HEX_DIGEST_LEN+1);
+ char *fp = tor_malloc(HEX_DIGEST_LEN+2);
base16_encode(fp, HEX_DIGEST_LEN+1, d, DIGEST_LEN);
+ fp[HEX_DIGEST_LEN] = '+';
+ fp[HEX_DIGEST_LEN+1] = '\0';
smartlist_add(fps, fp);
});
- resource = smartlist_join_strings(fps, "+", 0, NULL);
+ resource = smartlist_join_strings(fps, "", 0, NULL);
+ resource[strlen(resource)-1] = '\0';
SMARTLIST_FOREACH(fps, char *, cp, tor_free(cp));
smartlist_free(fps);
}