Commit 4ccc8d02 authored by Sebastian Hahn's avatar Sebastian Hahn
Browse files

Don't exit on dirauths for some config transitions

parent e26f5553
Loading
Loading
Loading
Loading

changes/bug4438

0 → 100644
+6 −0
Original line number Diff line number Diff line
  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.
+15 −4
Original line number Diff line number Diff line
@@ -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"))) {
      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>");
        }
      }
    }
  }