diff options
author | Roger Dingledine <arma@torproject.org> | 2014-09-10 23:01:18 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2014-09-18 15:29:14 -0400 |
commit | 905443f074088cbc6322341e5c1cd6b35cd363a8 (patch) | |
tree | de2f59ad5c1bc4c24688c22aed61e2f8e801cc63 /src | |
parent | 916d53d6ceab5b3a5d567f18a2bce8543d008a89 (diff) | |
download | tor-905443f074088cbc6322341e5c1cd6b35cd363a8.tar.gz tor-905443f074088cbc6322341e5c1cd6b35cd363a8.zip |
Clients no longer write "DirReqStatistics 0" in their saveconf output
Stop modifying the value of our DirReqStatistics torrc option just
because we're not a bridge or relay. This bug was causing Tor
Browser users to write "DirReqStatistics 0" in their torrc files
as if they had chosen to change the config.
Fixes bug 4244; bugfix on 0.2.3.1-alpha.
Diffstat (limited to 'src')
-rw-r--r-- | src/or/config.c | 14 | ||||
-rw-r--r-- | src/or/or.h | 5 |
2 files changed, 11 insertions, 8 deletions
diff --git a/src/or/config.c b/src/or/config.c index 92bd495471..35317f1945 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -208,7 +208,7 @@ static config_var_t option_vars_[] = { OBSOLETE("DirRecordUsageGranularity"), OBSOLETE("DirRecordUsageRetainIPs"), OBSOLETE("DirRecordUsageSaveInterval"), - V(DirReqStatistics, BOOL, "1"), + VAR("DirReqStatistics", BOOL, DirReqStatistics_option, "1"), VAR("DirAuthority", LINELIST, DirAuthorities, NULL), V(DirAuthorityFallbackRate, DOUBLE, "1.0"), V(DisableAllSwap, BOOL, "0"), @@ -1705,6 +1705,11 @@ options_act(const or_options_t *old_options) connection_or_update_token_buckets(get_connection_array(), options); } + + /* Only collect directory-request statistics on relays and bridges. */ + options->DirReqStatistics = options->DirReqStatistics_option && + server_mode(options); + if (options->CellStatistics || options->DirReqStatistics || options->EntryStatistics || options->ExitPortStatistics || options->ConnDirectionStatistics || @@ -1712,11 +1717,6 @@ options_act(const or_options_t *old_options) time_t now = time(NULL); int print_notice = 0; - /* Only collect directory-request statistics on relays and bridges. */ - if (!server_mode(options)) { - options->DirReqStatistics = 0; - } - /* Only collect other relay-only statistics on relays. */ if (!public_server_mode(options)) { options->CellStatistics = 0; @@ -1735,8 +1735,8 @@ options_act(const or_options_t *old_options) geoip_dirreq_stats_init(now); print_notice = 1; } else { + /* disable statistics collection since we have no geoip file */ options->DirReqStatistics = 0; - /* Don't warn Tor clients, they don't use statistics */ if (options->ORPort_set) log_notice(LD_CONFIG, "Configured to measure directory request " "statistics, but no GeoIP database found. " diff --git a/src/or/or.h b/src/or/or.h index 06d4e3c926..2258796aac 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3910,8 +3910,11 @@ typedef struct { * instead of a hostname. */ int WarnUnsafeSocks; - /** If true, the user wants us to collect statistics on clients + /** If true, we're configured to collect statistics on clients * requesting network statuses from us as directory. */ + int DirReqStatistics_option; + /** Internal variable to remember whether we're actually acting on + * DirReqStatistics_option -- yes if it's set and we're a server, else no. */ int DirReqStatistics; /** If true, the user wants us to collect statistics on port usage. */ |