Add support for a new option: FetchDirInfoExtraEarly

This new option will allow clients to download the newest fresh consensus
much sooner than they normally would do so, even if they previously set
FetchDirInfoEarly. This includes a proper ChangeLog entry and an updated man
page.
This commit is contained in:
Jacob Appelbaum 2009-07-11 18:43:33 -07:00
parent 041a7b9896
commit e7576f92de
5 changed files with 28 additions and 2 deletions

View File

@ -29,6 +29,12 @@ Changes in version 0.2.2.1-alpha - 2009-??-??
connecting clients to disk every 24 hours. To enable this, run
configure with the --enable-entry-stats option, and set
"EntryStatistics 1" in your torrc.
- Certain Tor clients (such as those behind check.torproject.org) may
want to fetch the consensus in an extra early manner. To enable this
a user may now set FetchDirInfoExtraEarly to 1. This also depends on
setting FetchDirInfoEarly to 1. Previous behavior will stay the same
as only certain clients who must have this information sooner should
set this option.
o Minor bugfixes
- Hidden service clients didn't use a cached service descriptor that

View File

@ -241,6 +241,13 @@ fetching early. Normal users should leave it off.
(Default: 0)
.LP
.TP
\fBFetchDirInfoExtraEarly \fR\fB0\fR|\fB1\fR\fP
If set to 1, Tor will fetch directory information before other
directory caches. It will attempt to download directory information closer to
the start of the consensus period. Normal users should leave it off.
(Default: 0)
.LP
.TP
\fBFetchHidServDescriptors \fR\fB0\fR|\fB1\fR\fP
If set to 0, Tor will never fetch any hidden service descriptors from
the rendezvous directories. This option is only useful if you're using

View File

@ -214,6 +214,7 @@ static config_var_t _option_vars[] = {
V(FirewallPorts, CSV, ""),
V(FastFirstHopPK, BOOL, "1"),
V(FetchDirInfoEarly, BOOL, "0"),
V(FetchDirInfoExtraEarly, BOOL, "0"),
V(FetchServerDescriptors, BOOL, "1"),
V(FetchHidServDescriptors, BOOL, "1"),
V(FetchUselessDescriptors, BOOL, "0"),
@ -3181,6 +3182,10 @@ options_validate(or_options_t *old_options, or_options_t *options,
REJECT("HSAuthorityRecordStats is set but we're not running as "
"a hidden service authority.");
if (options->FetchDirInfoExtraEarly && !options->FetchDirInfoEarly)
REJECT("FetchDirInfoExtraEarly requires that you also set "
"FetchDirInfoEarly");
if (options->ConnLimit <= 0) {
r = tor_snprintf(buf, sizeof(buf),
"ConnLimit must be greater than 0, but was set to %d",

View File

@ -1133,8 +1133,13 @@ update_consensus_networkstatus_fetch_time(time_t now)
/* We want to cache the next one at some point after this one
* is no longer fresh... */
start = c->fresh_until + CONSENSUS_MIN_SECONDS_BEFORE_CACHING;
/* But only in the first half-interval after that. */
dl_interval = interval/2;
/* Some clients may need the consensus sooner than others. */
if (options->FetchDirInfoExtraEarly) {
dl_interval = 60;
} else {
/* But only in the first half-interval after that. */
dl_interval = interval/2;
}
} else {
/* We're an ordinary client or a bridge. Give all the caches enough
* time to download the consensus. */

View File

@ -2444,6 +2444,9 @@ typedef struct {
* means directly from the authorities) no matter our other config? */
int FetchDirInfoEarly;
/** Should we fetch our dir info at the start of the consensus period? */
int FetchDirInfoExtraEarly;
char *VirtualAddrNetwork; /**< Address and mask to hand out for virtual
* MAPADDRESS requests. */
int ServerDNSSearchDomains; /**< Boolean: If set, we don't force exit