diff --git a/src/or/routerlist.c b/src/or/routerlist.c index c7c701bae3..46248fb67b 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -2265,17 +2265,25 @@ dump_routerlist_mem_usage(int severity) char last_valid_until[ISO_TIME_LEN+1]; char last_served_at[ISO_TIME_LEN+1]; char id[HEX_DIGEST_LEN+1]; + routerstatus_t *rs; format_iso_time(published, sd->published_on); format_iso_time(last_valid_until, sd->last_listed_as_valid_until); format_iso_time(last_served_at, sd->last_served_at); base16_encode(id, sizeof(id), sd->identity_digest, DIGEST_LEN); SMARTLIST_FOREACH(networkstatus_v2_list, networkstatus_v2_t *, ns, - if (networkstatus_v2_find_entry(ns, sd->identity_digest)) { - in_v2 = 1; break; + { + rs = networkstatus_v2_find_entry(ns, sd->identity_digest); + if (rs && !memcmp(rs->descriptor_digest, + sd->signed_descriptor_digest, DIGEST_LEN)) { + in_v2 = 1; break; + } }); - if (consensus && networkstatus_vote_find_entry(consensus, - sd->identity_digest)) - in_v3 = 1; + if (consensus) { + rs = networkstatus_vote_find_entry(consensus, sd->identity_digest); + if (rs && !memcmp(rs->descriptor_digest, + sd->signed_descriptor_digest, DIGEST_LEN)) + in_v3 = 1; + } log(severity, LD_DIR, "Old descriptor for %s (published %s) %sin v2 ns, %sin v3 " "consensus. Last valid until %s; last served at %s.",