Unverified Commit 90301247 authored by teor's avatar teor
Browse files

Merge remote-tracking branch 'tor-github/pr/765' into maint-0.2.9

parents 530304dd 981bb605
o Minor bugfixes (hidden service client):
- The introduction circuit was being timed out too quickly while waiting
for the rendezvous circuit to complete. Keep the intro circuit around
longer instead of timing out and reopening new ones constantly. Fixes
bug 23681; bugfix on 0.2.4.8-alpha.
...@@ -494,8 +494,7 @@ circuit_expire_building(void) ...@@ -494,8 +494,7 @@ circuit_expire_building(void)
cutoff = begindir_cutoff; cutoff = begindir_cutoff;
else if (victim->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) else if (victim->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT)
cutoff = close_cutoff; cutoff = close_cutoff;
else if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING || else if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT)
victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT)
cutoff = c_intro_cutoff; cutoff = c_intro_cutoff;
else if (victim->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO) else if (victim->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO)
cutoff = s_intro_cutoff; cutoff = s_intro_cutoff;
...@@ -614,12 +613,13 @@ circuit_expire_building(void) ...@@ -614,12 +613,13 @@ circuit_expire_building(void)
TO_ORIGIN_CIRCUIT(victim)->path_state = PATH_STATE_USE_FAILED; TO_ORIGIN_CIRCUIT(victim)->path_state = PATH_STATE_USE_FAILED;
break; break;
case CIRCUIT_PURPOSE_C_INTRODUCING: case CIRCUIT_PURPOSE_C_INTRODUCING:
/* We keep old introducing circuits around for /* That purpose means that the intro point circuit has been opened
* a while in parallel, and they can end up "opened". * succesfully but the INTRODUCE1 cell hasn't been sent yet because
* We decide below if we're going to mark them timed * the client is waiting for the rendezvous point circuit to open.
* out and eventually close them. * Keep this circuit open while waiting for the rendezvous circuit.
*/ * We let the circuit idle timeout take care of cleaning this
break; * circuit if it never used. */
continue;
case CIRCUIT_PURPOSE_C_ESTABLISH_REND: case CIRCUIT_PURPOSE_C_ESTABLISH_REND:
case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED: case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED:
case CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT: case CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT:
...@@ -713,8 +713,6 @@ circuit_expire_building(void) ...@@ -713,8 +713,6 @@ circuit_expire_building(void)
NULL) NULL)
break; break;
/* fallthrough! */ /* fallthrough! */
case CIRCUIT_PURPOSE_C_INTRODUCING:
/* connection_ap_handshake_attach_circuit() will relaunch for us */
case CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT: case CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT:
case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED: case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED:
/* If we have reached this line, we want to spare the circ for now. */ /* If we have reached this line, we want to spare the circ for now. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment