commit 4ccc8d029266dc673d901c01a7a8f59b4f530542 Author: Sebastian Hahn sebastian@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>"); + } } } }
tor-commits@lists.torproject.org