aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/connection_edge.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 848003012..351133c44 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -568,7 +568,12 @@ void connection_ap_expire_beginning(void) {
*/
conn->state = AP_CONN_STATE_CIRCUIT_WAIT;
circuit_detach_stream(circ, conn);
- /* give it another 15 seconds to try */
+ /* kludge to make us not try this circuit again, yet to allow
+ * current streams on it to survive if they can: make it
+ * unattractive to use for new streams */
+ assert(circ->timestamp_dirty);
+ circ->timestamp_dirty -= options.NewCircuitPeriod;
+ /* give our stream another 15 seconds to try */
conn->timestamp_lastread += 15;
if(connection_ap_handshake_attach_circuit(conn)<0) {
/* it will never work */