|
@@ -1297,14 +1297,18 @@ networkstatus_consensus_can_use_multiple_directories(
|
|
}
|
|
}
|
|
|
|
|
|
/** Check if we can use fallback directory mirrors for a consensus download.
|
|
/** Check if we can use fallback directory mirrors for a consensus download.
|
|
- * Only clients that have a list of additional fallbacks can use fallbacks. */
|
|
|
|
|
|
+ * If we have fallbacks and don't want to fetch from the authorities,
|
|
|
|
+ * we can use them. */
|
|
int
|
|
int
|
|
networkstatus_consensus_can_use_extra_fallbacks(const or_options_t *options)
|
|
networkstatus_consensus_can_use_extra_fallbacks(const or_options_t *options)
|
|
{
|
|
{
|
|
- /* If we are a client, and we have additional mirrors, we can use them.
|
|
|
|
- * The list length comparisons are a quick way to check if we have any
|
|
|
|
|
|
+ /* The list length comparisons are a quick way to check if we have any
|
|
* non-authority fallback directories. If we ever have any authorities that
|
|
* non-authority fallback directories. If we ever have any authorities that
|
|
* aren't fallback directories, we will need to change this code. */
|
|
* aren't fallback directories, we will need to change this code. */
|
|
|
|
+ tor_assert(smartlist_len(router_get_fallback_dir_servers())
|
|
|
|
+ >= smartlist_len(router_get_trusted_dir_servers()));
|
|
|
|
+ /* If we don't fetch from the authorities, and we have additional mirrors,
|
|
|
|
+ * we can use them. */
|
|
return (!directory_fetches_from_authorities(options)
|
|
return (!directory_fetches_from_authorities(options)
|
|
&& (smartlist_len(router_get_fallback_dir_servers())
|
|
&& (smartlist_len(router_get_fallback_dir_servers())
|
|
> smartlist_len(router_get_trusted_dir_servers())));
|
|
> smartlist_len(router_get_trusted_dir_servers())));
|