summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2023-06-15 13:23:36 -0400
committerDavid Goulet <dgoulet@torproject.org>2023-06-15 13:23:36 -0400
commit7a83aa4f5042905844cb9ab48a4876becd8f2175 (patch)
treeca501b1ed2e92d705dc1c97b4a604606894aafb6
parentcdb270d55ec7416b099bd0310ef2daece840a62b (diff)
parent17037f8732cc31a1f0cff5aea11840be038796d9 (diff)
downloadtor-7a83aa4f5042905844cb9ab48a4876becd8f2175.tar.gz
tor-7a83aa4f5042905844cb9ab48a4876becd8f2175.zip
Merge branch 'tor-gitlab/mr/722'
-rw-r--r--changes/bug408116
-rw-r--r--src/core/or/conflux_pool.c13
2 files changed, 15 insertions, 4 deletions
diff --git a/changes/bug40811 b/changes/bug40811
new file mode 100644
index 0000000000..2cf763592a
--- /dev/null
+++ b/changes/bug40811
@@ -0,0 +1,6 @@
+ o Minor bugfixes (conflux):
+ - Count leg launch attempts prior to attempting to launch them. This
+ avoids inifinite launch attempts due to internal circuit building
+ failures. Additionally, double-check that we have enough exits in
+ our consensus overall, before attempting to launch conflux sets.
+ Fixes bug 40811; bugfix on 0.4.8.1-alpha.
diff --git a/src/core/or/conflux_pool.c b/src/core/or/conflux_pool.c
index c8018f45e2..79fd6c1648 100644
--- a/src/core/or/conflux_pool.c
+++ b/src/core/or/conflux_pool.c
@@ -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;
}