Commit b8ceb464 authored by Nick Mathewson's avatar Nick Mathewson 🥔
Browse files

Merge branch 'bug11156_squashed'

parents 0c04416c 6606e676
Loading
Loading
Loading
Loading

changes/bug11156

0 → 100644
+5 −0
Original line number Diff line number Diff line
  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.
+1 −1
Original line number Diff line number Diff line
@@ -721,7 +721,7 @@ update_microdesc_downloads(time_t now)
  smartlist_t *missing;
  digestmap_t *pending;

  if (should_delay_dir_fetches(options))
  if (should_delay_dir_fetches(options, NULL))
    return;
  if (directory_too_idle_to_fetch_descriptors(options, now))
    return;
+30 −6
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include "router.h"
#include "routerlist.h"
#include "routerparse.h"
#include "transports.h"

/** Map from lowercase nickname to identity digest of named server, if any. */
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
 * 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
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()) {
    log_info(LD_DIR, "delaying dir fetches (no running bridges known)");
  if (msg_out) {
    *msg_out = NULL;
  }

  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;
}

@@ -901,7 +925,7 @@ void
update_networkstatus_downloads(time_t now)
{
  const or_options_t *options = get_options();
  if (should_delay_dir_fetches(options))
  if (should_delay_dir_fetches(options, NULL))
    return;
  update_consensus_networkstatus_downloads(now);
  update_certificate_downloads(now);
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ int networkstatus_nickname_is_unnamed(const char *nickname);
void networkstatus_consensus_download_failed(int status_code,
                                             const char *flavname);
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_certificate_downloads(time_t now);
int consensus_is_waiting_for_certs(void);
+4 −4
Original line number Diff line number Diff line
@@ -1477,6 +1477,7 @@ update_router_have_minimum_dir_info(void)
  const networkstatus_t *consensus =
    networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor());
  int using_md;
  const char *delay_fetches_msg = NULL;

  if (!consensus) {
    if (!networkstatus_get_latest_consensus())
@@ -1489,10 +1490,9 @@ update_router_have_minimum_dir_info(void)
    goto done;
  }

  if (should_delay_dir_fetches(get_options())) {
    log_notice(LD_DIR, "no known bridge descriptors running yet; stalling");
    strlcpy(dir_info_status, "No live bridge descriptors.",
            sizeof(dir_info_status));
  if (should_delay_dir_fetches(get_options(), &delay_fetches_msg)) {
    log_notice(LD_DIR, "Delaying dir fetches: %s", delay_fetches_msg);
    strlcpy(dir_info_status, "%s",  sizeof(dir_info_status));
    res = 0;
    goto done;
  }
Loading