Commit d3af4f4e authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Merge remote-tracking branch 'arma/bug16825'

parents e88686cb e3eaee1d
Loading
Loading
Loading
Loading

changes/bug16825

0 → 100644
+7 −0
Original line number Diff line number Diff line
  o Minor bugfixes:
    - Count receipt of new microdescriptors as progress towards
      bootstrapping. Now, when a user who has set EntryNodes finishes
      bootstrapping, Tor automatically repopulates the guard set based
      on this new directory information. Fixes bug 16825; bugfix on
      0.2.3.1-alpha.
+9 −6
Original line number Diff line number Diff line
@@ -1764,7 +1764,7 @@ load_downloaded_routers(const char *body, smartlist_t *which,

  added = router_load_routers_from_string(body, NULL, SAVED_NOWHERE, which,
                                  descriptor_digests, buf);
  if (general)
  if (added && general)
    control_event_bootstrap(BOOTSTRAP_STATUS_LOADING_DESCRIPTORS,
                            count_loading_descriptors_progress());
  return added;
@@ -1965,7 +1965,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
    routers_update_all_from_networkstatus(now, 3);
    update_microdescs_from_networkstatus(now);
    update_microdesc_downloads(now);
    directory_info_has_arrived(now, 0);
    directory_info_has_arrived(now, 0, 0);
    log_info(LD_DIR, "Successfully loaded consensus.");
  }

@@ -2001,7 +2001,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
         * ones got flushed to disk so it's safe to call this on them */
        connection_dir_download_cert_failed(conn, status_code);
      } else {
        directory_info_has_arrived(now, 0);
        directory_info_has_arrived(now, 0, 0);
        log_info(LD_DIR, "Successfully loaded certificates from fetch.");
      }
    } else {
@@ -2115,7 +2115,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
        if (load_downloaded_routers(body, which, descriptor_digests,
                                conn->router_purpose,
                                conn->base_.address))
          directory_info_has_arrived(now, 0);
          directory_info_has_arrived(now, 0, 0);
      }
    }
    if (which) { /* mark remaining ones as failed */
@@ -2166,8 +2166,11 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
        /* Mark remaining ones as failed. */
        dir_microdesc_download_failed(which, status_code);
      }
      if (mds && smartlist_len(mds)) {
        control_event_bootstrap(BOOTSTRAP_STATUS_LOADING_DESCRIPTORS,
                                count_loading_descriptors_progress());
        directory_info_has_arrived(now, 0, 1);
      }
      SMARTLIST_FOREACH(which, char *, cp, tor_free(cp));
      smartlist_free(which);
      smartlist_free(mds);
+3 −3
Original line number Diff line number Diff line
@@ -1002,12 +1002,12 @@ directory_all_unreachable(time_t now)
/** This function is called whenever we successfully pull down some new
 * network statuses or server descriptors. */
void
directory_info_has_arrived(time_t now, int from_cache)
directory_info_has_arrived(time_t now, int from_cache, int suppress_logs)
{
  const or_options_t *options = get_options();

  if (!router_have_minimum_dir_info()) {
    int quiet = from_cache ||
    int quiet = suppress_logs || from_cache ||
                directory_too_idle_to_fetch_descriptors(options, now);
    tor_log(quiet ? LOG_INFO : LOG_NOTICE, LD_DIR,
        "I learned some more directory information, but not enough to "
@@ -2391,7 +2391,7 @@ do_main_loop(void)
   * appropriate.)
   */
  now = time(NULL);
  directory_info_has_arrived(now, 1);
  directory_info_has_arrived(now, 1, 0);

  if (server_mode(get_options())) {
    /* launch cpuworkers. Need to do this *after* we've read the onion key. */
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ MOCK_DECL(void,connection_start_writing,(connection_t *conn));
void connection_stop_reading_from_linked_conn(connection_t *conn);

void directory_all_unreachable(time_t now);
void directory_info_has_arrived(time_t now, int from_cache);
void directory_info_has_arrived(time_t now, int from_cache, int suppress_logs);

void ip_address_changed(int at_interface);
void dns_servers_relaunch_checks(void);