diff options
author | Nick Mathewson <nickm@torproject.org> | 2014-06-19 10:42:19 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2014-06-19 10:42:19 -0400 |
commit | 922be84ca3eedddfcfd358a4728b7eb0405eb27b (patch) | |
tree | fae1b09faea67358d697916005f28714e0294cd6 /src/or | |
parent | c6e1080211f654f2f57c2604cee7ae6915a9261f (diff) | |
parent | 5e9bd1b5db1815698f7aed6caf5df9587185a8d1 (diff) | |
download | tor-922be84ca3eedddfcfd358a4728b7eb0405eb27b.tar tor-922be84ca3eedddfcfd358a4728b7eb0405eb27b.tar.gz |
Merge remote-tracking branch 'karsten/bug11683'
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/directory.c | 6 | ||||
-rw-r--r-- | src/or/routerlist.c | 6 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/or/directory.c b/src/or/directory.c index 22ba056ee..77f8f310b 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -197,9 +197,9 @@ dir_conn_purpose_to_string(int purpose) return "(unknown)"; } -/** Return true iff <b>identity_digest</b> is the digest of a router we - * believe to support extrainfo downloads. (If <b>is_authority</b> we do - * additional checking that's only valid for authorities.) */ +/** Return true iff <b>identity_digest</b> is the digest of a router which + * says that it caches extrainfos. (If <b>is_authority</b> we always + * believe that to be true.) */ int router_supports_extrainfo(const char *identity_digest, int is_authority) { diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 8f3477a4a..2c0f19367 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -1438,7 +1438,7 @@ router_pick_directory_server_impl(dirinfo_type_t type, int flags) /* Find all the running dirservers we know about. */ SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), const node_t *, node) { - int is_trusted; + int is_trusted, is_trusted_extrainfo; int is_overloaded; tor_addr_t addr; const routerstatus_t *status = node->rs; @@ -1453,8 +1453,10 @@ router_pick_directory_server_impl(dirinfo_type_t type, int flags) if (requireother && router_digest_is_me(node->identity)) continue; is_trusted = router_digest_is_trusted_dir(node->identity); + is_trusted_extrainfo = router_digest_is_trusted_dir_type( + node->identity, EXTRAINFO_DIRINFO); if ((type & EXTRAINFO_DIRINFO) && - !router_supports_extrainfo(node->identity, 0)) + !router_supports_extrainfo(node->identity, is_trusted_extrainfo)) continue; if ((type & MICRODESC_DIRINFO) && !is_trusted && !node->rs->version_supports_microdesc_cache) |