summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2017-01-27 09:32:05 -0500
committerNick Mathewson <nickm@torproject.org>2017-02-01 09:29:53 -0500
commit51b562c605e2a959ee51ee85bd40de887adf9dea (patch)
treeeb3031ab7b8ec255e7d43f19b1ac34cb60c77fd0
parent8bd3c1b74df450d2bf4d1069c975c8babe5b770e (diff)
downloadtor-51b562c605e2a959ee51ee85bd40de887adf9dea.tar.gz
tor-51b562c605e2a959ee51ee85bd40de887adf9dea.zip
Use an internal variable for HiddenServiceStatistics
Stop modifying the value of our torrc option HiddenServiceStatistics just because we're not a bridge or relay. This bug was causing Tor Browser users to write "HiddenServiceStatistics 0" in their torrc files as if they had chosen to change the config. Fixes #21150 Signed-off-by: David Goulet <dgoulet@torproject.org>
-rw-r--r--changes/bug211505
-rw-r--r--src/or/config.c5
-rw-r--r--src/or/or.h4
3 files changed, 12 insertions, 2 deletions
diff --git a/changes/bug21150 b/changes/bug21150
new file mode 100644
index 0000000000..6a8b4f93b0
--- /dev/null
+++ b/changes/bug21150
@@ -0,0 +1,5 @@
+ o Minor bugfixes (config, hidden service):
+ - Stop modifying the value of our torrc option HiddenServiceStatistics
+ just because we're not a bridge or relay. Use an internal value for what
+ tor should use and keep the torrc option intact. Fixes bug 21150; bugfix
+ on tor-0.2.6.2-alpha.
diff --git a/src/or/config.c b/src/or/config.c
index d0ca561e1f..5e7fd6de4b 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -358,7 +358,7 @@ static config_var_t option_vars_[] = {
VAR("HiddenServiceMaxStreams",LINELIST_S, RendConfigLines, NULL),
VAR("HiddenServiceMaxStreamsCloseCircuit",LINELIST_S, RendConfigLines, NULL),
VAR("HiddenServiceNumIntroductionPoints", LINELIST_S, RendConfigLines, NULL),
- V(HiddenServiceStatistics, BOOL, "1"),
+ VAR("HiddenServiceStatistics", BOOL, HiddenServiceStatistics_option, "1"),
V(HidServAuth, LINELIST, NULL),
V(CloseHSClientCircuitsImmediatelyOnTimeout, BOOL, "0"),
V(CloseHSServiceRendCircuitsImmediatelyOnTimeout, BOOL, "0"),
@@ -2004,6 +2004,8 @@ options_act(const or_options_t *old_options)
/* Only collect directory-request statistics on relays and bridges. */
options->DirReqStatistics = options->DirReqStatistics_option &&
server_mode(options);
+ options->HiddenServiceStatistics =
+ options->HiddenServiceStatistics_option && server_mode(options);
if (options->CellStatistics || options->DirReqStatistics ||
options->EntryStatistics || options->ExitPortStatistics ||
@@ -2018,7 +2020,6 @@ options_act(const or_options_t *old_options)
options->CellStatistics = 0;
options->EntryStatistics = 0;
options->ConnDirectionStatistics = 0;
- options->HiddenServiceStatistics = 0;
options->ExitPortStatistics = 0;
}
diff --git a/src/or/or.h b/src/or/or.h
index 18fff78942..0db9f23604 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -4168,6 +4168,10 @@ typedef struct {
/** If true, the user wants us to collect statistics as hidden service
* directory, introduction point, or rendezvous point. */
+ int HiddenServiceStatistics_option;
+ /** Internal variable to remember whether we're actually acting on
+ * HiddenServiceStatistics_option -- yes if it's set and we're a server,
+ * else no. */
int HiddenServiceStatistics;
/** If true, include statistics file contents in extra-info documents. */