[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. */