mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Use cbt to tell when to launch parallel intro circuit
Implement feature from trac #2799
This commit is contained in:
parent
aa950e6c48
commit
65eb0e41ac
4
changes/cbt_parallel_intro
Normal file
4
changes/cbt_parallel_intro
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Minor features
|
||||||
|
- Use computed circuit-build timeouts to decide when to launch
|
||||||
|
parallel introdution circuits. (Previously, we would retry
|
||||||
|
after 15 seconds.)
|
@ -204,7 +204,7 @@ circuit_get_best(edge_connection_t *conn, int must_be_open, uint8_t purpose,
|
|||||||
int need_uptime, int need_internal)
|
int need_uptime, int need_internal)
|
||||||
{
|
{
|
||||||
circuit_t *circ, *best=NULL;
|
circuit_t *circ, *best=NULL;
|
||||||
time_t now = time(NULL);
|
struct timeval now;
|
||||||
int intro_going_on_but_too_old = 0;
|
int intro_going_on_but_too_old = 0;
|
||||||
|
|
||||||
tor_assert(conn);
|
tor_assert(conn);
|
||||||
@ -213,17 +213,16 @@ circuit_get_best(edge_connection_t *conn, int must_be_open, uint8_t purpose,
|
|||||||
purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT ||
|
purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT ||
|
||||||
purpose == CIRCUIT_PURPOSE_C_REND_JOINED);
|
purpose == CIRCUIT_PURPOSE_C_REND_JOINED);
|
||||||
|
|
||||||
|
tor_gettimeofday(&now);
|
||||||
|
|
||||||
for (circ=global_circuitlist;circ;circ = circ->next) {
|
for (circ=global_circuitlist;circ;circ = circ->next) {
|
||||||
if (!circuit_is_acceptable(circ,conn,must_be_open,purpose,
|
if (!circuit_is_acceptable(circ,conn,must_be_open,purpose,
|
||||||
need_uptime,need_internal,now))
|
need_uptime,need_internal,now.tv_sec))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* XXX022 make this 15 be a function of circuit finishing times we've
|
|
||||||
* seen lately, a la Fallon Chen's GSoC work -RD */
|
|
||||||
#define REND_PARALLEL_INTRO_DELAY 15
|
|
||||||
if (purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT &&
|
if (purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT &&
|
||||||
!must_be_open && circ->state != CIRCUIT_STATE_OPEN &&
|
!must_be_open && circ->state != CIRCUIT_STATE_OPEN &&
|
||||||
circ->timestamp_created.tv_sec + REND_PARALLEL_INTRO_DELAY < now) {
|
tv_mdiff(&now, &circ->timestamp_created) > circ_times.timeout_ms) {
|
||||||
intro_going_on_but_too_old = 1;
|
intro_going_on_but_too_old = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user