Commit 41929c26 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

r15287@tombo: nickm | 2008-04-22 17:09:25 -0400

 Periodically launch requests for server/authority.z when it might help us learn our IP.  Fix for bug 652.


svn:r14418
parent d72b256f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -40,6 +40,8 @@ Changes in version 0.2.1.1-alpha - 2008-??-??
    - When we choose to abandon a new entry guard because we think our
      older ones might be better, close any circuits pending on that
      new entry guard connection. Bugfix on 0.1.2.8-beta; found by lodger.
    - Detect address changes correctly on non-directory mirror
      servers.  Fix for bug 652.

  o Minor features:
    - Allow separate log levels to be configured for different logging
+20 −0
Original line number Diff line number Diff line
@@ -4013,17 +4013,37 @@ update_consensus_router_descriptor_downloads(time_t now)
  smartlist_free(no_longer_old);
}

/** How often should we launch a server/authority request to be sure of getting
 * a guess for our IP? */
/*XXXX021 this info should come from netinfo cells or something, or we should
 * do this only when we aren't seeing incoming data. see bug 652. */
#define DUMMY_DOWNLOAD_INTERVAL (20*60)

/** Launch downloads for router status as needed. */
void
update_router_descriptor_downloads(time_t now)
{
  or_options_t *options = get_options();
  static time_t last_dummy_download = 0;
  if (should_delay_dir_fetches(options))
    return;
  if (directory_fetches_dir_info_early(options)) {
    update_router_descriptor_cache_downloads_v2(now);
  }
  update_consensus_router_descriptor_downloads(now);

  /* XXXX021 we could be smarter here; see notes on bug 652. */
  /* If we're a server that doesn't have a configured address, we rely on
   * directory fetches to learn when our address changes.  So if we haven't
   * tried to get any routerdescs in a long time, try a dummy fetch now. */
  if (!options->Address &&
      server_mode(options) &&
      last_routerdesc_download_attempted + DUMMY_DOWNLOAD_INTERVAL < now &&
      last_dummy_download + DUMMY_DOWNLOAD_INTERVAL < now) {
    last_dummy_download = now;
    directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC,
                                 ROUTER_PURPOSE_GENERAL, "authority.z", 1);
  }
}

/** Launch extrainfo downloads as needed. */