mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Revert "cmux: Don't pick a marked for close circuit as active"
This reverts commit 4f1298e418
.
This commit is contained in:
parent
4f1298e418
commit
331204e100
@ -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.
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user