From c85f78e74c52d19b575618d031e67b64210c14fc Mon Sep 17 00:00:00 2001 From: David Goulet Date: Wed, 31 Jan 2018 13:59:05 -0500 Subject: [PATCH] Revert "ns: Call notify_networkstatus_changed() after the new consensus is set globally" This reverts commit 3a247ca92a06c864a2cb634fbe2bc23cf48fb977. --- changes/bug24975 | 6 ------ src/or/networkstatus.c | 16 ++++------------ 2 files changed, 4 insertions(+), 18 deletions(-) delete mode 100644 changes/bug24975 diff --git a/changes/bug24975 b/changes/bug24975 deleted file mode 100644 index fe937d74d5..0000000000 --- a/changes/bug24975 +++ /dev/null @@ -1,6 +0,0 @@ - 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. diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 4ae114f35f..e0a3e4cdc6 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -1564,11 +1564,7 @@ notify_control_networkstatus_changed(const networkstatus_t *old_c, smartlist_free(changed); } -/* 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. */ +/* Called when the consensus has changed from old_c to new_c. */ static void notify_networkstatus_changed(const networkstatus_t *old_c, const networkstatus_t *new_c) @@ -1901,6 +1897,9 @@ 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); @@ -1923,13 +1922,6 @@ 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) {