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

r16246@catbus: nickm | 2007-10-28 19:34:58 -0400

 Implement a FallbackNetworkstatusFile (default to $prefix/share/tor/fallback-consensus) to that we know about lots of directory servers and routers when we start up the first time.


svn:r12259
parent 20b10859
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -619,6 +619,12 @@ AC_SUBST(LOCALSTATEDIR)
AH_TEMPLATE([LOCALSTATEDIR], [Default location to store state files.])
AC_DEFINE_UNQUOTED(LOCALSTATEDIR,"$LOCALSTATEDIR")

dnl Note: this is not the same as Tor's "DataDir" config option.
DATADIR=`eval echo $datadir`
AC_SUBST(DATADIR)
AH_TEMPLATE([DATADIR], [Default location for platform-independent read-only data.])
AC_DEFINE_UNQUOTED(DATADIR,"$DATADIR")

# Set CFLAGS _after_ all the above checks, since our warnings are stricter
# than autoconf's macros like.
if test $ac_cv_c_compiler_gnu = yes; then
+3 −2
Original line number Diff line number Diff line
@@ -21,8 +21,9 @@ Things we'd like to do in 0.2.0.x:
    licenses for other components of the bundles.

  - Before the feature freeze: (Nick)
    - Support for preconfigured mirror lists
      - Use a pre-shipped fallback consensus.
    o Support for preconfigured mirror lists
      o Use a pre-shipped fallback consensus.
      o Code to install a pre-defined fallback consensus
    . Download consensuses (et al) via if-modified-since
      o Implement backend support for sending if-modified-since
      o Use it for consensuses.
+6 −0
Original line number Diff line number Diff line
@@ -3,3 +3,9 @@ confdir = $(sysconfdir)/tor
EXTRA_DIST = 

conf_DATA = torrc.sample

data_DATA = fallback-consensus

# If we don't have it, fake it.
fallback-consensus:
	touch fallback-consensus
 No newline at end of file
+4 −0
Original line number Diff line number Diff line
@@ -118,6 +118,8 @@ typedef struct config_var_t {
/** An entry for config_vars: "The option <b>name</b> is obsolete." */
#define OBSOLETE(name) { name, CONFIG_TYPE_OBSOLETE, 0, NULL }



/** Array of configuration options.  Until we disallow nonstandard
 * abbreviations, order is significant, since the first matching option will
 * be chosen first.
@@ -175,6 +177,8 @@ static config_var_t _option_vars[] = {
  V(ExitNodes,                   STRING,   NULL),
  V(ExitPolicy,                  LINELIST, NULL),
  V(ExitPolicyRejectPrivate,     BOOL,     "1"),
  V(FallbackNetworkstatusFile,   STRING,
    DATADIR PATH_SEPARATOR "tor" PATH_SEPARATOR "fallback-consensus"),
  V(FascistFirewall,             BOOL,     "0"),
  V(FirewallPorts,               CSV,      ""),
  V(FastFirstHopPK,              BOOL,     "1"),
+20 −0
Original line number Diff line number Diff line
@@ -158,6 +158,8 @@ router_reload_consensus_networkstatus(void)
{
  char *filename;
  char *s;
  struct stat st;
  or_options_t *options = get_options();

  /* XXXX020 Suppress warnings if cached consensus is bad. */

@@ -182,6 +184,24 @@ router_reload_consensus_networkstatus(void)
    tor_free(s);
  }
  tor_free(filename);

  if (!current_consensus ||
      (stat(options->FallbackNetworkstatusFile, &st)==0 &&
       st.st_mtime > current_consensus->valid_after)) {
    s = read_file_to_str(options->FallbackNetworkstatusFile,
                         RFTS_IGNORE_MISSING, NULL);
    if (s) {
      if (networkstatus_set_current_consensus(s, 1, 1)) {
        log_info(LD_FS, "Couldn't load consensus networkstatus from \"%s\"",
                 options->FallbackNetworkstatusFile);
      } else {
        log_notice(LD_FS, "Loaded fallback consensus networkstaus from \"%s\"",
                   options->FallbackNetworkstatusFile);
      }
      tor_free(s);
    }
  }

  routers_update_all_from_networkstatus(time(NULL));

  return 0;
Loading