]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Bug 40811: Count conflux leg launch attempts early.
authorMike Perry <mikeperry-git@torproject.org>
Thu, 15 Jun 2023 16:13:34 +0000 (16:13 +0000)
committerMike Perry <mikeperry-git@torproject.org>
Thu, 15 Jun 2023 16:13:34 +0000 (16:13 +0000)
Also, double check that the consensus has enough overall exits before
attempting conflux set launch.

src/core/or/conflux_pool.c

index c8018f45e232ced9c0afcbab3e6042e2b36df747..79fd6c16485123e68303deee6c11c47e2343ad86 100644 (file)
@@ -1140,6 +1140,11 @@ conflux_launch_leg(const uint8_t *nonce)
              fmt_nonce(nonce));
   }
 
+  /* Increase the retry count for this conflux object as in this nonce.
+   * We must do this now, because some of the maze's early failure paths
+   * call right back into this function for relaunch. */
+  unlinked->cfx->num_leg_launch++;
+
   origin_circuit_t *circ =
     circuit_establish_circuit_conflux(nonce, CIRCUIT_PURPOSE_CONFLUX_UNLINKED,
                                       exit, flags);
@@ -1169,9 +1174,6 @@ conflux_launch_leg(const uint8_t *nonce)
                                              last_seq_sent, last_seq_recv,
                                              get_client_ux()));
 
-  /* Increase the retry count for this conflux object as in this nonce. */
-  unlinked->cfx->num_leg_launch++;
-
   unlinked_leg_add(unlinked, leg);
   return true;
 
@@ -1338,7 +1340,10 @@ conflux_predict_new(time_t now)
 {
   (void) now;
 
-  if (!conflux_is_enabled(NULL)) {
+  /* If conflux is disabled, or we have insufficient consensus exits,
+   * don't prebuild. */
+  if (!conflux_is_enabled(NULL) ||
+      router_have_consensus_path() != CONSENSUS_PATH_EXIT) {
     return;
   }