[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r17567: {tor} Add new internal-use-only option for controllers to use to p (in tor/trunk: . doc/spec src/or)
Author: nickm
Date: 2008-12-10 17:17:02 -0500 (Wed, 10 Dec 2008)
New Revision: 17567
Modified:
tor/trunk/ChangeLog
tor/trunk/doc/spec/control-spec.txt
tor/trunk/src/or/config.c
tor/trunk/src/or/main.c
tor/trunk/src/or/or.h
Log:
Add new internal-use-only option for controllers to use to prevent SIGHUP from reloading the configuration. Fixes bug 856.
Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog 2008-12-10 20:45:31 UTC (rev 17566)
+++ tor/trunk/ChangeLog 2008-12-10 22:17:02 UTC (rev 17567)
@@ -19,6 +19,8 @@
- When we realize that another process has modified our cached
descriptors, print out a more useful error message rather than
triggering an assertion. Fixes bug 885. Patch from Karsten.
+ - Add an internal-use-only __ReloadTorrcOnSIGHUP option for controllers
+ to prevent SIGHUP from reloading the configuration. Fixes bug 856.
o Minor bugfixes:
- Resume using the correct "REASON=" stream when telling the
Modified: tor/trunk/doc/spec/control-spec.txt
===================================================================
--- tor/trunk/doc/spec/control-spec.txt 2008-12-10 20:45:31 UTC (rev 17566)
+++ tor/trunk/doc/spec/control-spec.txt 2008-12-10 22:17:02 UTC (rev 17567)
@@ -1650,6 +1650,16 @@
As HashedControlPassword, but is not saved to the torrc file by
SAVECONF. Added in Tor 0.2.0.20-rc.
+ __ReloadTorrcOnSIGHUP
+
+ If this option is true (the default), we reload the torrc from disk
+ every time we get a SIGHUP (from the controller or via a signal).
+ Otherwise, we don't. This option exists so that controllers can keep
+ their options from getting overwritten when a user sends Tor a HUP for
+ some other reason (for example, to rotate the logs).
+
+ (Boolean. Default: "1")
+
5.5. Phases from the Bootstrap status event.
This section describes the various bootstrap phases currently reported
Modified: tor/trunk/src/or/config.c
===================================================================
--- tor/trunk/src/or/config.c 2008-12-10 20:45:31 UTC (rev 17566)
+++ tor/trunk/src/or/config.c 2008-12-10 22:17:02 UTC (rev 17567)
@@ -333,6 +333,7 @@
VAR("VersioningAuthoritativeDirectory",BOOL,VersioningAuthoritativeDir, "0"),
V(VirtualAddrNetwork, STRING, "127.192.0.0/10"),
V(WarnPlaintextPorts, CSV, "23,109,110,143"),
+ VAR("__ReloadTorrcOnSIGHUP", BOOL, ReloadTorrcOnSIGHUP, "1"),
VAR("__AllDirActionsPrivate", BOOL, AllDirActionsPrivate, "0"),
VAR("__DisablePredictedCircuits",BOOL,DisablePredictedCircuits, "0"),
VAR("__LeaveStreamsUnattached",BOOL, LeaveStreamsUnattached, "0"),
Modified: tor/trunk/src/or/main.c
===================================================================
--- tor/trunk/src/or/main.c 2008-12-10 20:45:31 UTC (rev 17566)
+++ tor/trunk/src/or/main.c 2008-12-10 22:17:02 UTC (rev 17567)
@@ -1321,7 +1321,8 @@
dmalloc_log_changed(0, 1, 0, 0);
#endif
- log_notice(LD_GENERAL,"Received reload signal (hup). Reloading config.");
+ log_notice(LD_GENERAL,"Received reload signal (hup). Reloading config and "
+ "resetting internal state.");
if (accounting_is_enabled(options))
accounting_record_bandwidth_usage(time(NULL), get_or_state());
@@ -1329,13 +1330,18 @@
routerlist_reset_warnings();
addressmap_clear_transient();
/* first, reload config variables, in case they've changed */
- /* no need to provide argc/v, they've been cached inside init_from_config */
- if (options_init_from_torrc(0, NULL) < 0) {
- log_err(LD_CONFIG,"Reading config failed--see warnings above. "
- "For usage, try -h.");
- return -1;
+ if (options->ReloadTorrcOnSIGHUP) {
+ /* no need to provide argc/v, they've been cached inside init_from_config */
+ if (options_init_from_torrc(0, NULL) < 0) {
+ log_err(LD_CONFIG,"Reading config failed--see warnings above. "
+ "For usage, try -h.");
+ return -1;
+ }
+ options = get_options(); /* they have changed now */
+ } else {
+ log_notice(LD_GENERAL, "Not reloading config file: the controller told "
+ "us not to.");
}
- options = get_options(); /* they have changed now */
if (authdir_mode_handles_descs(options, -1)) {
/* reload the approved-routers file */
if (dirserv_load_fingerprint_file() < 0) {
Modified: tor/trunk/src/or/or.h
===================================================================
--- tor/trunk/src/or/or.h 2008-12-10 20:45:31 UTC (rev 17566)
+++ tor/trunk/src/or/or.h 2008-12-10 22:17:02 UTC (rev 17567)
@@ -2496,6 +2496,10 @@
/** Optionally, a file with GeoIP data. */
char *GeoIPFile;
+ /** If true, SIGHUP should reload the torrc. Sometimes controllers want
+ * to make this false. */
+ int ReloadTorrcOnSIGHUP;
+
} or_options_t;
/** Persistent state for an onion router, as saved to disk. */