summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2004-03-06 05:10:07 +0000
committerRoger Dingledine <arma@torproject.org>2004-03-06 05:10:07 +0000
commit516ef41ac1fd26f338cf1d36ec9d2bf0beedaa5c (patch)
tree8e67c8cd527141973334ac818f932c96040106ea
parentc362ed877dc3e507b806594e35b4240326e6e8d5 (diff)
downloadtor-516ef41ac1fd26f338cf1d36ec9d2bf0beedaa5c.tar.gz
tor-516ef41ac1fd26f338cf1d36ec9d2bf0beedaa5c.zip
if a stream times out after 15s without a connected cell,
don't try that circuit again. svn:r1239
-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 848003012e..351133c444 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 */