tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit 331204e1005b6e14cb28388a852c489c0638e539
parent 4f1298e4189f8bda8ecf48cf7ff25445698d747a
Author: David Goulet <dgoulet@torproject.org>
Date:   Thu, 23 Jun 2022 10:55:56 -0400

Revert "cmux: Don't pick a marked for close circuit as active"

This reverts commit 4f1298e4189f8bda8ecf48cf7ff25445698d747a.

Diffstat:
Dchanges/ticket25312 | 3---
Msrc/core/or/circuitmux_ewma.c | 12++----------
2 files changed, 2 insertions(+), 13 deletions(-)

diff --git a/changes/ticket25312 b/changes/ticket25312 @@ -1,3 +0,0 @@ - o Minor bugfixes (circuit): - - Fix a tiny window where a circuit can be chosen as active but is marked - for close. Fixes bug 25312; bugfix on 0.2.4.4-alpha. diff --git a/src/core/or/circuitmux_ewma.c b/src/core/or/circuitmux_ewma.c @@ -35,7 +35,6 @@ #include <math.h> #include "core/or/or.h" -#include "core/or/circuit_st.h" #include "core/or/circuitmux.h" #include "core/or/circuitmux_ewma.h" #include "lib/crypt_ops/crypto_rand.h" @@ -383,17 +382,10 @@ ewma_pick_active_circuit(circuitmux_t *cmux, pol = TO_EWMA_POL_DATA(pol_data); - for (int i = 0; i < smartlist_len(pol->active_circuit_pqueue); i++) { + if (smartlist_len(pol->active_circuit_pqueue) > 0) { /* Get the head of the queue */ - cell_ewma = smartlist_get(pol->active_circuit_pqueue, i); + cell_ewma = smartlist_get(pol->active_circuit_pqueue, 0); circ = cell_ewma_to_circuit(cell_ewma); - /* Don't send back closed circuit. This is possible because the circuit - * is detached from the cmux before the circuit gets freed and not when - * marked for close. Because of that, there is a window where a closed - * circuit can be picked here. See #25312. */ - if (circ->marked_for_close) { - continue; - } } return circ;