avoid another redundant check

we should avoid launching a consensus fetch if we don't want one,
but if we do end up with an extra one, we should let the other checks
take care of it.
This commit is contained in:
Roger Dingledine 2016-04-13 03:13:12 -04:00
parent e230e80ab3
commit bcae392e0e
4 changed files with 1 additions and 49 deletions

View File

@ -1173,12 +1173,6 @@ directory_initiate_command_rend(const tor_addr_port_t *or_addr_port,
return;
}
/* ensure we don't make excess connections when we're already downloading
* a consensus during bootstrap */
if (connection_dir_avoid_extra_connection_for_purpose(dir_purpose)) {
return;
}
conn = dir_connection_new(tor_addr_family(&addr));
/* set up conn so it's got all the data we need to remember */
@ -3676,36 +3670,6 @@ connection_dir_finished_flushing(dir_connection_t *conn)
return 0;
}
/* Check if we would close excess consensus connections. If we would, any
* new consensus connection would become excess immediately, so return 1.
* Otherwise, return 0. */
int
connection_dir_avoid_extra_connection_for_purpose(unsigned int purpose)
{
const or_options_t *options = get_options();
/* We're not interested in connections that aren't fetching a consensus. */
if (purpose != DIR_PURPOSE_FETCH_CONSENSUS) {
return 0;
}
/* we're only interested in avoiding excess connections if we could
* have created any in the first place */
if (!networkstatus_consensus_can_use_multiple_directories(options)) {
return 0;
}
/* If there are connections downloading a consensus, and we are still
* bootstrapping (that is, we have no usable consensus), we can be sure that
* any further connections would be excess. */
if (networkstatus_consensus_is_downloading_usable_flavor()
&& networkstatus_consensus_is_bootstrapping(time(NULL))) {
return 1;
}
return 0;
}
/* We just got a new consensus! If there are other in-progress requests
* for this consensus flavor (for example because we launched several in
* parallel), cancel them.
@ -3736,8 +3700,7 @@ connection_dir_close_consensus_fetches(dir_connection_t *except_this_one,
}
/** Connected handler for directory connections: begin sending data to the
* server, and return 0, or, if the connection is an excess bootstrap
* connection, close all excess bootstrap connections.
* server, and return 0.
* Only used when connections don't immediately connect. */
int
connection_dir_finished_connecting(dir_connection_t *conn)

View File

@ -78,7 +78,6 @@ void directory_initiate_command(const tor_addr_t *or_addr, uint16_t or_port,
const char *resource,
const char *payload, size_t payload_len,
time_t if_modified_since);
int connection_dir_avoid_extra_connection_for_purpose(unsigned int purpose);
#define DSR_HEX (1<<0)
#define DSR_BASE64 (1<<1)

View File

@ -1369,15 +1369,6 @@ networkstatus_consensus_is_already_downloading(const char *resource)
return answer;
}
/* Is tor currently downloading a consensus of the usable flavor? */
int
networkstatus_consensus_is_downloading_usable_flavor(void)
{
const char *resource =
networkstatus_get_flavor_name(usable_consensus_flavor());
return networkstatus_consensus_is_already_downloading(resource);
}
/** Given two router status entries for the same router identity, return 1 if
* if the contents have changed between them. Otherwise, return 0. */
static int

View File

@ -77,7 +77,6 @@ int networkstatus_consensus_can_use_extra_fallbacks(
const or_options_t *options);
int networkstatus_consensus_has_excess_connections(void);
int networkstatus_consensus_is_already_downloading(const char *resource);
int networkstatus_consensus_is_downloading_usable_flavor(void);
#define NSSET_FROM_CACHE 1
#define NSSET_WAS_WAITING_FOR_CERTS 2