mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Merge branch 'tor-github/pr/1261'
This commit is contained in:
@@ -92,6 +92,12 @@ find_start_of_next_microdesc(const char *s, const char *eos)
|
||||
#undef NEXT_LINE
|
||||
}
|
||||
|
||||
static inline int
|
||||
policy_is_reject_star_or_null(struct short_policy_t *policy)
|
||||
{
|
||||
return !policy || short_policy_is_reject_star(policy);
|
||||
}
|
||||
|
||||
/** Parse as many microdescriptors as are found from the string starting at
|
||||
* <b>s</b> and ending at <b>eos</b>. If allow_annotations is set, read any
|
||||
* annotations we recognize and ignore ones we don't.
|
||||
@@ -250,6 +256,11 @@ microdescs_parse_from_string(const char *s, const char *eos,
|
||||
md->ipv6_exit_policy = parse_short_policy(tok->args[0]);
|
||||
}
|
||||
|
||||
if (policy_is_reject_star_or_null(md->exit_policy) &&
|
||||
policy_is_reject_star_or_null(md->ipv6_exit_policy)) {
|
||||
md->policy_is_reject_star = 1;
|
||||
}
|
||||
|
||||
smartlist_add(result, md);
|
||||
okay = 1;
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@ struct microdesc_t {
|
||||
unsigned int no_save : 1;
|
||||
/** If true, this microdesc has an entry in the microdesc_map */
|
||||
unsigned int held_in_map : 1;
|
||||
/** True iff the exit policy for this router rejects everything. */
|
||||
unsigned int policy_is_reject_star : 1;
|
||||
/** Reference count: how many node_ts have a reference to this microdesc? */
|
||||
unsigned int held_by_nodes;
|
||||
|
||||
|
||||
@@ -1424,8 +1424,7 @@ node_exit_policy_rejects_all(const node_t *node)
|
||||
if (node->ri)
|
||||
return node->ri->policy_is_reject_star;
|
||||
else if (node->md)
|
||||
return node->md->exit_policy == NULL ||
|
||||
short_policy_is_reject_star(node->md->exit_policy);
|
||||
return node->md->policy_is_reject_star;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user