mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
@@ -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"),
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -2174,6 +2174,9 @@ typedef struct {
|
||||
int V3AuthDistDelay;
|
||||
/** The number of intervals we think a consensus should be valid. */
|
||||
int V3AuthNIntervalsValid;
|
||||
|
||||
/** DOCDOC here and in tor.1 */
|
||||
char *FallbackNetworkstatusFile;
|
||||
} or_options_t;
|
||||
|
||||
/** Persistent state for an onion router, as saved to disk. */
|
||||
|
||||
Reference in New Issue
Block a user