mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Believe that v3 dirauths always serve extra infos.
Clients should always believe that v3 directory authorities serve extra-info documents, regardless of whether their server descriptor contains a "caches-extra-info" line or not. Fixes part of #11683.
This commit is contained in:
parent
8a173635bc
commit
5e9bd1b5db
6
changes/bug11683
Normal file
6
changes/bug11683
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
o Minor bugfixes:
|
||||||
|
- Always believe that v3 directory authorities serve extra-info
|
||||||
|
documents, regardless of whether their server descriptor contains a
|
||||||
|
"caches-extra-info" line or not. Fixes part of #11683. Bugfix on
|
||||||
|
0.2.0.1-alpha.
|
||||||
|
|
@ -197,9 +197,9 @@ dir_conn_purpose_to_string(int purpose)
|
|||||||
return "(unknown)";
|
return "(unknown)";
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return true iff <b>identity_digest</b> is the digest of a router we
|
/** Return true iff <b>identity_digest</b> is the digest of a router which
|
||||||
* believe to support extrainfo downloads. (If <b>is_authority</b> we do
|
* says that it caches extrainfos. (If <b>is_authority</b> we always
|
||||||
* additional checking that's only valid for authorities.) */
|
* believe that to be true.) */
|
||||||
int
|
int
|
||||||
router_supports_extrainfo(const char *identity_digest, int is_authority)
|
router_supports_extrainfo(const char *identity_digest, int is_authority)
|
||||||
{
|
{
|
||||||
|
@ -1438,7 +1438,7 @@ router_pick_directory_server_impl(dirinfo_type_t type, int flags)
|
|||||||
|
|
||||||
/* Find all the running dirservers we know about. */
|
/* Find all the running dirservers we know about. */
|
||||||
SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), const node_t *, node) {
|
SMARTLIST_FOREACH_BEGIN(nodelist_get_list(), const node_t *, node) {
|
||||||
int is_trusted;
|
int is_trusted, is_trusted_extrainfo;
|
||||||
int is_overloaded;
|
int is_overloaded;
|
||||||
tor_addr_t addr;
|
tor_addr_t addr;
|
||||||
const routerstatus_t *status = node->rs;
|
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))
|
if (requireother && router_digest_is_me(node->identity))
|
||||||
continue;
|
continue;
|
||||||
is_trusted = router_digest_is_trusted_dir(node->identity);
|
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) &&
|
if ((type & EXTRAINFO_DIRINFO) &&
|
||||||
!router_supports_extrainfo(node->identity, 0))
|
!router_supports_extrainfo(node->identity, is_trusted_extrainfo))
|
||||||
continue;
|
continue;
|
||||||
if ((type & MICRODESC_DIRINFO) && !is_trusted &&
|
if ((type & MICRODESC_DIRINFO) && !is_trusted &&
|
||||||
!node->rs->version_supports_microdesc_cache)
|
!node->rs->version_supports_microdesc_cache)
|
||||||
|
Loading…
Reference in New Issue
Block a user