|
@@ -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. */
|
|
|
}
|