diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-04-28 10:05:32 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-04-28 21:06:07 -0400 |
commit | cd42ae71850985ed8dd34ae73dc6265a643fcb13 (patch) | |
tree | 817a5ce16100a1d049328dd6b450d608ec215e28 /src/or | |
parent | 0130e7c9d2842ad58e1b84829aeab16a2efba3bb (diff) | |
download | tor-cd42ae71850985ed8dd34ae73dc6265a643fcb13.tar.gz tor-cd42ae71850985ed8dd34ae73dc6265a643fcb13.zip |
Only authorities should automatically download v2 networkstatus documents
Clients and relays haven't used them since early 0.2.0.x. The only
remaining use by authorities learning about new relays ahead of scedule;
see proposal 147 for what we intend to do about that.
We're leaving in an option (FetchV2Networkstatus) to manually fetch v2
networkstatuses, because apparently dnsel and maybe bwauth want them.
This fixes bug 3022.
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/config.c | 1 | ||||
-rw-r--r-- | src/or/directory.c | 1 | ||||
-rw-r--r-- | src/or/networkstatus.c | 2 | ||||
-rw-r--r-- | src/or/or.h | 4 |
4 files changed, 6 insertions, 2 deletions
diff --git a/src/or/config.c b/src/or/config.c index f003e4d296..ab9c5db337 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -255,6 +255,7 @@ static config_var_t _option_vars[] = { V(FetchServerDescriptors, BOOL, "1"), V(FetchHidServDescriptors, BOOL, "1"), V(FetchUselessDescriptors, BOOL, "0"), + V(FetchV2Networkstatus, BOOL, "0"), #ifdef WIN32 V(GeoIPFile, FILENAME, "<default>"), #else diff --git a/src/or/directory.c b/src/or/directory.c index 0c095fe871..68734e6042 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -353,6 +353,7 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, break; case DIR_PURPOSE_FETCH_V2_NETWORKSTATUS: type = V2_AUTHORITY; + prefer_authority = 1; /* Only v2 authorities have these anyway. */ break; case DIR_PURPOSE_FETCH_SERVERDESC: type = (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_AUTHORITY : diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 4f6fe15409..a50d3ca070 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -1356,7 +1356,7 @@ update_networkstatus_downloads(time_t now) or_options_t *options = get_options(); if (should_delay_dir_fetches(options)) return; - if (directory_fetches_dir_info_early(options)) + if (authdir_mode_any_main(options) || options->FetchV2Networkstatus) update_v2_networkstatus_cache_downloads(now); update_consensus_networkstatus_downloads(now); update_certificate_downloads(now); diff --git a/src/or/or.h b/src/or/or.h index 7d354c8fe1..30179e5db0 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2489,7 +2489,9 @@ typedef struct { /** Boolean: do we publish hidden service descriptors to the HS auths? */ int PublishHidServDescriptors; int FetchServerDescriptors; /**< Do we fetch server descriptors as normal? */ - int FetchHidServDescriptors; /** and hidden service descriptors? */ + int FetchHidServDescriptors; /**< and hidden service descriptors? */ + int FetchV2Networkstatus; /**< Do we fetch v2 networkstatus documents when + * we don't need to? */ int HidServDirectoryV2; /**< Do we participate in the HS DHT? */ int MinUptimeHidServDirectoryV2; /**< As directory authority, accept hidden |