summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/or/routerlist.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index b82f473c14..a40bf34867 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -4194,6 +4194,7 @@ update_router_have_minimum_dir_info(void)
int res;
or_options_t *options = get_options();
routerinfo_t *ri;
+ signed_descriptor_t *sd;
const networkstatus_t *consensus =
networkstatus_get_reasonably_live_consensus(now);
@@ -4220,10 +4221,12 @@ update_router_have_minimum_dir_info(void)
{
if (client_would_use_router(rs, now, options)) {
++num_usable; /* the consensus says we want it. */
- /* XXX021 shouldn't we look up by descriptor digest? */
- ri = router_get_by_digest(rs->identity_digest);
- if (ri) {
- ++num_present; /* we have some descriptor for it. */
+ if ((sd = router_get_by_descriptor_digest(rs->descriptor_digest)) &&
+ (ri = router_get_by_digest(rs->identity_digest)) &&
+ !memcmp(ri->cache_info.signed_descriptor_digest,
+ sd->signed_descriptor_digest, DIGEST_LEN)) {
+ /* we have the descriptor listed in the consensus. */
+ ++num_present;
if (ri->is_running)
++num_running; /* our local status says it's still up. */
}