diff options
author | David Goulet <dgoulet@torproject.org> | 2023-06-15 13:23:36 -0400 |
---|---|---|
committer | David Goulet <dgoulet@torproject.org> | 2023-06-15 13:23:36 -0400 |
commit | 7a83aa4f5042905844cb9ab48a4876becd8f2175 (patch) | |
tree | ca501b1ed2e92d705dc1c97b4a604606894aafb6 | |
parent | cdb270d55ec7416b099bd0310ef2daece840a62b (diff) | |
parent | 17037f8732cc31a1f0cff5aea11840be038796d9 (diff) | |
download | tor-7a83aa4f5042905844cb9ab48a4876becd8f2175.tar.gz tor-7a83aa4f5042905844cb9ab48a4876becd8f2175.zip |
Merge branch 'tor-gitlab/mr/722'
-rw-r--r-- | changes/bug40811 | 6 | ||||
-rw-r--r-- | src/core/or/conflux_pool.c | 13 |
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; } |