mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Don't do directory fetches before all PTs have been configured.
This commit is contained in:
parent
0b7a66fac7
commit
6606e676ee
5
changes/bug11156
Normal file
5
changes/bug11156
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
o Minor bugfixes (clients):
|
||||||
|
- Fix a bug where we would attempt to connect to bridges before
|
||||||
|
our pluggable transports were configured, which resulted in some
|
||||||
|
erroneous log messages. Fixes bug 11156; bugfix on
|
||||||
|
0.2.3.2-alpha.
|
@ -721,7 +721,7 @@ update_microdesc_downloads(time_t now)
|
|||||||
smartlist_t *missing;
|
smartlist_t *missing;
|
||||||
digestmap_t *pending;
|
digestmap_t *pending;
|
||||||
|
|
||||||
if (should_delay_dir_fetches(options))
|
if (should_delay_dir_fetches(options, NULL))
|
||||||
return;
|
return;
|
||||||
if (directory_too_idle_to_fetch_descriptors(options, now))
|
if (directory_too_idle_to_fetch_descriptors(options, now))
|
||||||
return;
|
return;
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "router.h"
|
#include "router.h"
|
||||||
#include "routerlist.h"
|
#include "routerlist.h"
|
||||||
#include "routerparse.h"
|
#include "routerparse.h"
|
||||||
|
#include "transports.h"
|
||||||
|
|
||||||
/** Map from lowercase nickname to identity digest of named server, if any. */
|
/** Map from lowercase nickname to identity digest of named server, if any. */
|
||||||
static strmap_t *named_server_map = NULL;
|
static strmap_t *named_server_map = NULL;
|
||||||
@ -884,14 +885,37 @@ update_consensus_networkstatus_fetch_time(time_t now)
|
|||||||
|
|
||||||
/** Return 1 if there's a reason we shouldn't try any directory
|
/** Return 1 if there's a reason we shouldn't try any directory
|
||||||
* fetches yet (e.g. we demand bridges and none are yet known).
|
* fetches yet (e.g. we demand bridges and none are yet known).
|
||||||
* Else return 0. */
|
* Else return 0.
|
||||||
|
|
||||||
|
* If we return 1 and <b>msg_out</b> is provided, set <b>msg_out</b>
|
||||||
|
* to an explanation of why directory fetches are delayed. (If we
|
||||||
|
* return 0, we set msg_out to NULL.)
|
||||||
|
*/
|
||||||
int
|
int
|
||||||
should_delay_dir_fetches(const or_options_t *options)
|
should_delay_dir_fetches(const or_options_t *options, const char **msg_out)
|
||||||
{
|
{
|
||||||
if (options->UseBridges && !any_bridge_descriptors_known()) {
|
if (msg_out) {
|
||||||
log_info(LD_DIR, "delaying dir fetches (no running bridges known)");
|
*msg_out = NULL;
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options->UseBridges) {
|
||||||
|
if (!any_bridge_descriptors_known()) {
|
||||||
|
if (msg_out) {
|
||||||
|
*msg_out = "No running bridges";
|
||||||
|
}
|
||||||
|
log_info(LD_DIR, "Delaying dir fetches (no running bridges known)");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pt_proxies_configuration_pending()) {
|
||||||
|
if (msg_out) {
|
||||||
|
*msg_out = "Pluggable transport proxies still configuring";
|
||||||
|
}
|
||||||
|
log_info(LD_DIR, "Delaying dir fetches (pt proxies still configuring)");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -901,7 +925,7 @@ void
|
|||||||
update_networkstatus_downloads(time_t now)
|
update_networkstatus_downloads(time_t now)
|
||||||
{
|
{
|
||||||
const or_options_t *options = get_options();
|
const or_options_t *options = get_options();
|
||||||
if (should_delay_dir_fetches(options))
|
if (should_delay_dir_fetches(options, NULL))
|
||||||
return;
|
return;
|
||||||
update_consensus_networkstatus_downloads(now);
|
update_consensus_networkstatus_downloads(now);
|
||||||
update_certificate_downloads(now);
|
update_certificate_downloads(now);
|
||||||
|
@ -53,7 +53,7 @@ int networkstatus_nickname_is_unnamed(const char *nickname);
|
|||||||
void networkstatus_consensus_download_failed(int status_code,
|
void networkstatus_consensus_download_failed(int status_code,
|
||||||
const char *flavname);
|
const char *flavname);
|
||||||
void update_consensus_networkstatus_fetch_time(time_t now);
|
void update_consensus_networkstatus_fetch_time(time_t now);
|
||||||
int should_delay_dir_fetches(const or_options_t *options);
|
int should_delay_dir_fetches(const or_options_t *options,const char **msg_out);
|
||||||
void update_networkstatus_downloads(time_t now);
|
void update_networkstatus_downloads(time_t now);
|
||||||
void update_certificate_downloads(time_t now);
|
void update_certificate_downloads(time_t now);
|
||||||
int consensus_is_waiting_for_certs(void);
|
int consensus_is_waiting_for_certs(void);
|
||||||
|
@ -1477,6 +1477,7 @@ update_router_have_minimum_dir_info(void)
|
|||||||
const networkstatus_t *consensus =
|
const networkstatus_t *consensus =
|
||||||
networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor());
|
networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor());
|
||||||
int using_md;
|
int using_md;
|
||||||
|
const char *delay_fetches_msg = NULL;
|
||||||
|
|
||||||
if (!consensus) {
|
if (!consensus) {
|
||||||
if (!networkstatus_get_latest_consensus())
|
if (!networkstatus_get_latest_consensus())
|
||||||
@ -1489,10 +1490,9 @@ update_router_have_minimum_dir_info(void)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (should_delay_dir_fetches(get_options())) {
|
if (should_delay_dir_fetches(get_options(), &delay_fetches_msg)) {
|
||||||
log_notice(LD_DIR, "no known bridge descriptors running yet; stalling");
|
log_notice(LD_DIR, "Delaying dir fetches: %s", delay_fetches_msg);
|
||||||
strlcpy(dir_info_status, "No live bridge descriptors.",
|
strlcpy(dir_info_status, "%s", sizeof(dir_info_status));
|
||||||
sizeof(dir_info_status));
|
|
||||||
res = 0;
|
res = 0;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
@ -669,7 +669,7 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now)
|
|||||||
char id_digest_str[2*DIGEST_LEN+1];
|
char id_digest_str[2*DIGEST_LEN+1];
|
||||||
char sk_digest_str[2*DIGEST_LEN+1];
|
char sk_digest_str[2*DIGEST_LEN+1];
|
||||||
|
|
||||||
if (should_delay_dir_fetches(get_options()))
|
if (should_delay_dir_fetches(get_options(), NULL))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pending_cert = fp_pair_map_new();
|
pending_cert = fp_pair_map_new();
|
||||||
@ -4593,7 +4593,7 @@ void
|
|||||||
update_router_descriptor_downloads(time_t now)
|
update_router_descriptor_downloads(time_t now)
|
||||||
{
|
{
|
||||||
const or_options_t *options = get_options();
|
const or_options_t *options = get_options();
|
||||||
if (should_delay_dir_fetches(options))
|
if (should_delay_dir_fetches(options, NULL))
|
||||||
return;
|
return;
|
||||||
if (!we_fetch_router_descriptors(options))
|
if (!we_fetch_router_descriptors(options))
|
||||||
return;
|
return;
|
||||||
@ -4614,7 +4614,7 @@ update_extrainfo_downloads(time_t now)
|
|||||||
int n_no_ei = 0, n_pending = 0, n_have = 0, n_delay = 0;
|
int n_no_ei = 0, n_pending = 0, n_have = 0, n_delay = 0;
|
||||||
if (! options->DownloadExtraInfo)
|
if (! options->DownloadExtraInfo)
|
||||||
return;
|
return;
|
||||||
if (should_delay_dir_fetches(options))
|
if (should_delay_dir_fetches(options, NULL))
|
||||||
return;
|
return;
|
||||||
if (!router_have_minimum_dir_info())
|
if (!router_have_minimum_dir_info())
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user