Merge branch 'bug4438-v2'

This commit is contained in:
Nick Mathewson 2012-04-24 11:18:41 -04:00
commit 461771ebbc
2 changed files with 22 additions and 4 deletions

6
changes/bug4438 Normal file
View File

@ -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 0.2.1.9-alpha.

View File

@ -651,15 +651,27 @@ 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_OUTDATED(added)) {
log_err(LD_GENERAL, "Unable to add own descriptor to directory: %s",
m?m:"<unknown error>");
return -1;
} else {
/* If the descriptor was outdated, 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 "
"after key init: %s. This is usually not a problem.",
m?m:"<unknown error>");
}
}
}
}