mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 20:33:31 +01:00
Merge branch 'maint-0.3.5'
This commit is contained in:
commit
51d94cea33
6
changes/ticket19566
Normal file
6
changes/ticket19566
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
o Code simplification and refactoring (shared random, dirauth):
|
||||||
|
- Change many tor_assert() to use BUG() instead. The idea is to not crash
|
||||||
|
a dirauth but rather scream loudly with a stacktrace and let it continue
|
||||||
|
run. The shared random subsystem is very resilient and if anything wrong
|
||||||
|
happens with it, at worst a non coherent value will be put in the vote
|
||||||
|
and discarded by the other authorities. Closes ticket 19566.
|
@ -949,7 +949,8 @@ sr_compute_srv(void)
|
|||||||
/* Computing a shared random value in the commit phase is very wrong. This
|
/* Computing a shared random value in the commit phase is very wrong. This
|
||||||
* should only happen at the very end of the reveal phase when a new
|
* should only happen at the very end of the reveal phase when a new
|
||||||
* protocol run is about to start. */
|
* protocol run is about to start. */
|
||||||
tor_assert(sr_state_get_phase() == SR_PHASE_REVEAL);
|
if (BUG(sr_state_get_phase() != SR_PHASE_REVEAL))
|
||||||
|
return;
|
||||||
state_commits = sr_state_get_commits();
|
state_commits = sr_state_get_commits();
|
||||||
|
|
||||||
commits = smartlist_new();
|
commits = smartlist_new();
|
||||||
|
@ -595,8 +595,10 @@ disk_state_update(void)
|
|||||||
{
|
{
|
||||||
config_line_t **next, *line;
|
config_line_t **next, *line;
|
||||||
|
|
||||||
tor_assert(sr_disk_state);
|
if (BUG(!sr_disk_state))
|
||||||
tor_assert(sr_state);
|
return;
|
||||||
|
if (BUG(!sr_state))
|
||||||
|
return;
|
||||||
|
|
||||||
/* Reset current disk state. */
|
/* Reset current disk state. */
|
||||||
disk_state_reset();
|
disk_state_reset();
|
||||||
@ -760,7 +762,8 @@ disk_state_save_to_disk(void)
|
|||||||
STATIC void
|
STATIC void
|
||||||
reset_state_for_new_protocol_run(time_t valid_after)
|
reset_state_for_new_protocol_run(time_t valid_after)
|
||||||
{
|
{
|
||||||
tor_assert(sr_state);
|
if (BUG(!sr_state))
|
||||||
|
return;
|
||||||
|
|
||||||
/* Keep counters in track */
|
/* Keep counters in track */
|
||||||
sr_state->n_reveal_rounds = 0;
|
sr_state->n_reveal_rounds = 0;
|
||||||
@ -1092,7 +1095,8 @@ sr_state_update(time_t valid_after)
|
|||||||
{
|
{
|
||||||
sr_phase_t next_phase;
|
sr_phase_t next_phase;
|
||||||
|
|
||||||
tor_assert(sr_state);
|
if (BUG(!sr_state))
|
||||||
|
return;
|
||||||
|
|
||||||
/* Don't call this function twice in the same voting period. */
|
/* Don't call this function twice in the same voting period. */
|
||||||
if (valid_after <= sr_state->valid_after) {
|
if (valid_after <= sr_state->valid_after) {
|
||||||
@ -1131,7 +1135,8 @@ sr_state_update(time_t valid_after)
|
|||||||
/* Count the current round */
|
/* Count the current round */
|
||||||
if (sr_state->phase == SR_PHASE_COMMIT) {
|
if (sr_state->phase == SR_PHASE_COMMIT) {
|
||||||
/* invariant check: we've not entered reveal phase yet */
|
/* invariant check: we've not entered reveal phase yet */
|
||||||
tor_assert(sr_state->n_reveal_rounds == 0);
|
if (BUG(sr_state->n_reveal_rounds != 0))
|
||||||
|
return;
|
||||||
sr_state->n_commit_rounds++;
|
sr_state->n_commit_rounds++;
|
||||||
} else {
|
} else {
|
||||||
sr_state->n_reveal_rounds++;
|
sr_state->n_reveal_rounds++;
|
||||||
@ -1321,7 +1326,8 @@ sr_state_init(int save_to_disk, int read_from_disk)
|
|||||||
void
|
void
|
||||||
set_sr_phase(sr_phase_t phase)
|
set_sr_phase(sr_phase_t phase)
|
||||||
{
|
{
|
||||||
tor_assert(sr_state);
|
if (BUG(!sr_state))
|
||||||
|
return;
|
||||||
sr_state->phase = phase;
|
sr_state->phase = phase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user