commit 83307fc267e7de5fd3a9ccc0c51d6d377f454495 Author: Nick Mathewson nickm@torproject.org Date: Wed Jan 18 10:21:33 2017 -0500
Add __SocksPort etc variants for non-persistent use
Implements feature 20956. --- changes/feature20956 | 6 ++++++ doc/tor.1.txt | 13 +++++++++++++ src/or/config.c | 13 +++++++++++-- 3 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/changes/feature20956 b/changes/feature20956 new file mode 100644 index 0000000..1ebddb1 --- /dev/null +++ b/changes/feature20956 @@ -0,0 +1,6 @@ + o Minor features (configuration, controller): + - Each of the *Port options, such as SocksPort, ORPort, ControlPort, + and so on, now comes with a __*Port variant that will not be + saved to the torrc file by the controller's SAVECONF command. + This change allows TorBrowser to set up a single-use domain socket + for each time it launches Tor. Closes ticket 20956. diff --git a/doc/tor.1.txt b/doc/tor.1.txt index f1068ce..330cdd4 100644 --- a/doc/tor.1.txt +++ b/doc/tor.1.txt @@ -2668,6 +2668,19 @@ The following options are used for running a testing Tor network. we replace it and issue a new key? (Default: 3 hours for link and auth; 1 day for signing.)
+NON-PERSISTENT OPTIONS +---------------------- + +These options are not saved to the torrc file by the "SAVECONF" controller +command. Other options of this type are documented in control-spec.txt, +section 5.4. End-users should mostly ignore them. + +[[UnderscorePorts]] **__ControlPort**, **__DirPort**, **__DNSPort**, **__ExtORPort**, **__NATDPort**, **__ORPort**, **__SocksPort**, **__TransPort**:: + These underscore-prefixed options are variants of the regular Port + options. They behave the same, except they are not saved to the + torrc file by the controller's SAVECONF command. + + SIGNALS -------
diff --git a/src/or/config.c b/src/or/config.c index 3b70b97..fe6aa78 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -133,8 +133,17 @@ static config_abbrev_t option_abbrevs_[] = { /** An entry for config_vars: "The option <b>name</b> is obsolete." */ #define OBSOLETE(name) { name, CONFIG_TYPE_OBSOLETE, 0, NULL }
-#define VPORT(member) \ - VAR(#member, LINELIST, member ## _lines, NULL) +/** + * Macro to declare *Port options. Each one comes in three entries. + * For example, most users should use "SocksPort" to configure the + * socks port, but TorBrowser wants to use __SocksPort so that it + * isn't stored by SAVECONF. The SocksPortLines virtual option is + * used to query both options from the controller. + */ +#define VPORT(member) \ + VAR(#member "Lines", LINELIST_V, member ## _lines, NULL), \ + VAR(#member, LINELIST_S, member ## _lines, NULL), \ + VAR("__" #member, LINELIST_S, member ## _lines, NULL)
/** Array of configuration options. Until we disallow nonstandard * abbreviations, order is significant, since the first matching option will
tor-commits@lists.torproject.org