[tor-commits] [tor/master] Don't exit on dirauths for some config transitions

nickm at torproject.org nickm at torproject.org
Tue Apr 24 15:21:28 UTC 2012


commit 4ccc8d029266dc673d901c01a7a8f59b4f530542
Author: Sebastian Hahn <sebastian at torproject.org>
Date:   Tue Nov 8 12:44:12 2011 +0100

    Don't exit on dirauths for some config transitions
---
 changes/bug4438 |    6 ++++++
 src/or/router.c |   19 +++++++++++++++----
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/changes/bug4438 b/changes/bug4438
new file mode 100644
index 0000000..f6d0c49
--- /dev/null
+++ b/changes/bug4438
@@ -0,0 +1,6 @@
+  o Minor bugfixes:
+    - Fix a dirauth-only exit on sighup that could happen during some
+      configuration state transitions. We now don't treat it as a fatal
+      error when the new descriptor we just generated in init_keys
+      isn't accepted. Fixes bug 4438; bugfix on FIXME.
+
diff --git a/src/or/router.c b/src/or/router.c
index c9f141b..6199e9e 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -646,15 +646,26 @@ init_keys(void)
       return -1;
     }
     if (mydesc) {
+      was_router_added_t added;
       ri = router_parse_entry_from_string(mydesc, NULL, 1, 0, NULL);
       if (!ri) {
         log_err(LD_GENERAL,"Generated a routerinfo we couldn't parse.");
         return -1;
       }
-      if (!WRA_WAS_ADDED(dirserv_add_descriptor(ri, &m, "self"))) {
-        log_err(LD_GENERAL,"Unable to add own descriptor to directory: %s",
-                m?m:"<unknown error>");
-        return -1;
+      added = dirserv_add_descriptor(ri, &m, "self");
+      if (!WRA_WAS_ADDED(added)) {
+        if (WRA_WAS_REJECTED(added)) {
+          log_err(LD_GENERAL, "Unable to add own descriptor to directory: %s",
+                  m?m:"<unknown error>");
+          return -1;
+        } else {
+          /* If the descriptor wasn't rejected, that's ok. This can happen
+           * when some config options are toggled that affect workers, but
+           * we don't really need new keys yet so the descriptor doesn't
+           * change and the old one is still fresh. */
+          log_info(LD_GENERAL, "Couldn't add own descriptor to directory: %s",
+                   m?m:"unknown error>");
+        }
       }
     }
   }





More information about the tor-commits mailing list