]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Add new internal-use-only option for controllers to use to prevent SIGHUP from reload...
authorNick Mathewson <nickm@torproject.org>
Wed, 10 Dec 2008 22:17:02 +0000 (22:17 +0000)
committerNick Mathewson <nickm@torproject.org>
Wed, 10 Dec 2008 22:17:02 +0000 (22:17 +0000)
svn:r17567

ChangeLog
doc/spec/control-spec.txt
src/or/config.c
src/or/main.c
src/or/or.h

index eca662b4c57ac0a0202c63ef8f4fc6f9fc0b92a4..1da30715742487b92ac5f2770ab5a214bd5ba306 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -19,6 +19,8 @@ Changes in version 0.2.1.9-alpha - 200?-??-??
     - 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
index 9ad1c4e7a2a5b2a24a1c40a86adf5729f543985b..4d1a7eb51430b915892829eb608fe972ade691dc 100644 (file)
@@ -1650,6 +1650,16 @@ $Id$
     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
index 2ed610c337972e1db2269c65cb4515cdbe4cd1f1..f35c18006831976471d9ee1e1501f0cf856ef151 100644 (file)
@@ -333,6 +333,7 @@ static config_var_t _option_vars[] = {
   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"),
index 7872229f426b85a1244c60590868e9cedb55eab8..3d02d2e87120dfb904050867f012ae9cbcc81758 100644 (file)
@@ -1321,7 +1321,8 @@ do_hup(void)
   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 @@ do_hup(void)
   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) {
index ac384421a92846b74c56fd8db626c675dd605d54..96af19e1f7d2320094b29affb159eb30fbc4cd13 100644 (file)
@@ -2496,6 +2496,10 @@ typedef struct {
   /** 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. */