[tor-commits] [tor/master] Revert "ns: Call notify_networkstatus_changed() after the new consensus is set globally"

nickm at torproject.org nickm at torproject.org
Thu Feb 1 13:15:24 UTC 2018


commit c85f78e74c52d19b575618d031e67b64210c14fc
Author: David Goulet <dgoulet at torproject.org>
Date:   Wed Jan 31 13:59:05 2018 -0500

    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(-)

diff --git a/changes/bug24975 b/changes/bug24975
deleted file mode 100644
index fe937d74d..000000000
--- 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 4ae114f35..e0a3e4cdc 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) {





More information about the tor-commits mailing list