Don't recreate descriptor on sighup

We used to regenerate our descriptor whenever we'd get a sighup. This
was caused by a bug in options_transition_affects_workers() that would
return true even if the options were exactly the same. Down the call
path we'd call init_keys(), which made us make a new descriptor which
the authorities would reject, and the node would subsequently fall out
of the consensus.

This patch fixes only the first part of this bug:
options_transition_affects_workers() behaves correctly now. The second
part still wants a fix.
This commit is contained in:
Sebastian Hahn 2011-05-21 19:10:11 +02:00 committed by Roger Dingledine
parent b8ffb00cf1
commit 3ff7925a70
2 changed files with 7 additions and 1 deletions

6
changes/bug1810 Normal file
View File

@ -0,0 +1,6 @@
o Major bugfixes:
- Don't decide to make a new descriptor when receiving a HUP signal.
This bug has caused a lot of relays to disappear from the consensus
periodically. Fixes the most common case of triggering bug 1810;
bugfix on 0.2.2.7-alpha.

View File

@ -3809,7 +3809,7 @@ options_transition_affects_workers(or_options_t *old_options,
old_options->ORPort != new_options->ORPort || old_options->ORPort != new_options->ORPort ||
old_options->ServerDNSSearchDomains != old_options->ServerDNSSearchDomains !=
new_options->ServerDNSSearchDomains || new_options->ServerDNSSearchDomains ||
old_options->SafeLogging != new_options->SafeLogging || old_options->_SafeLogging != new_options->_SafeLogging ||
old_options->ClientOnly != new_options->ClientOnly || old_options->ClientOnly != new_options->ClientOnly ||
public_server_mode(old_options) != public_server_mode(new_options) || public_server_mode(old_options) != public_server_mode(new_options) ||
!config_lines_eq(old_options->Logs, new_options->Logs) || !config_lines_eq(old_options->Logs, new_options->Logs) ||