mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 05:03:43 +01:00
Merge branch 'maint-0.3.2'
This commit is contained in:
commit
0dc1595d03
6
changes/bug24975
Normal file
6
changes/bug24975
Normal file
@ -0,0 +1,6 @@
|
||||
o Major bugfixes (scheduler, consensus):
|
||||
- A logic in the code was preventing the scheduler subystem to properly
|
||||
make a decision based on the latest consensus when it arrives. This lead
|
||||
to the scheduler failing to notice any consensus parameters that might
|
||||
change from one consensus to another. Fixes bug 24975; bugfix on
|
||||
0.3.2.1-alpha.
|
@ -1600,7 +1600,11 @@ notify_control_networkstatus_changed(const networkstatus_t *old_c,
|
||||
smartlist_free(changed);
|
||||
}
|
||||
|
||||
/* Called when the consensus has changed from old_c to new_c. */
|
||||
/* Called when the consensus has changed from old_c to new_c.
|
||||
*
|
||||
* IMPORTANT: This is called _after_ the new consensus has been set in the
|
||||
* global state so this is safe for anything getting the latest consensus from
|
||||
* that state. */
|
||||
static void
|
||||
notify_networkstatus_changed(const networkstatus_t *old_c,
|
||||
const networkstatus_t *new_c)
|
||||
@ -1934,9 +1938,6 @@ networkstatus_set_current_consensus(const char *consensus,
|
||||
|
||||
const int is_usable_flavor = flav == usable_consensus_flavor();
|
||||
|
||||
if (is_usable_flavor) {
|
||||
notify_networkstatus_changed(networkstatus_get_latest_consensus(), c);
|
||||
}
|
||||
if (flav == FLAV_NS) {
|
||||
if (current_ns_consensus) {
|
||||
networkstatus_copy_old_consensus_info(c, current_ns_consensus);
|
||||
@ -1959,6 +1960,13 @@ networkstatus_set_current_consensus(const char *consensus,
|
||||
free_consensus = 0; /* avoid free */
|
||||
}
|
||||
|
||||
/* Called _after_ the consensus is set in its global variable so any
|
||||
* functions called from this notification can safely get the latest
|
||||
* consensus being the new one. */
|
||||
if (is_usable_flavor) {
|
||||
notify_networkstatus_changed(networkstatus_get_latest_consensus(), c);
|
||||
}
|
||||
|
||||
waiting = &consensus_waiting_for_certs[flav];
|
||||
if (waiting->consensus &&
|
||||
waiting->consensus->valid_after <= c->valid_after) {
|
||||
|
Loading…
Reference in New Issue
Block a user