[or-cvs] [tor/master] New config option "CircuitStreamTimeout"

arma at seul.org arma at seul.org
Sun Nov 22 04:37:18 UTC 2009


Author: Roger Dingledine <arma at torproject.org>
Date: Sat, 21 Nov 2009 23:36:36 -0500
Subject: New config option "CircuitStreamTimeout"
Commit: 7f3f88bed38758d1f6f72cd0864cf93809bb5440

New config option "CircuitStreamTimeout" to override our internal
timeout schedule for how many seconds until we detach a stream from
a circuit and try a new circuit. If your network is particularly
slow, you might want to set this to a number like 60.
---
 ChangeLog                |    6 ++++++
 src/or/config.c          |    1 +
 src/or/connection_edge.c |    5 ++++-
 src/or/or.h              |    9 +++++++--
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 1e19a20..24f835f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,10 @@
 Changes in version 0.2.2.7-alpha - 2009-??-??
+  o Minor features:
+    - New config option "CircuitStreamTimeout" to override our internal
+      timeout schedule for how many seconds until we detach a stream from
+      a circuit and try a new circuit. If your network is particularly
+      slow, you might want to set this to a number like 60.
+
   o Minor bugfixes:
     - Fix compilation on OSX 10.3, which has a stub mlockall() but
       hides it. Bugfix on 0.2.2.6-alpha.
diff --git a/src/or/config.c b/src/or/config.c
index b6a52a8..2d21435 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -166,6 +166,7 @@ static config_var_t _option_vars[] = {
   V(CellStatistics,              BOOL,     "0"),
   V(CircuitBuildTimeout,         INTERVAL, "0"),
   V(CircuitIdleTimeout,          INTERVAL, "1 hour"),
+  V(CircuitStreamTimeout,        INTERVAL, "0"),
   V(ClientDNSRejectInternalAddresses, BOOL,"1"),
   V(ClientOnly,                  BOOL,     "0"),
   V(ConsensusParams,             STRING,   NULL),
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 97d6595..75a57fe 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -377,13 +377,16 @@ connection_edge_finished_connecting(edge_connection_t *edge_conn)
 static int
 compute_retry_timeout(edge_connection_t *conn)
 {
+  int timeout = get_options()->CircuitStreamTimeout;
+  if (timeout) /* if our config options override the default, use them */
+    return timeout;
   if (conn->num_socks_retries < 2) /* try 0 and try 1 */
     return 10;
   return 15;
 }
 
 /** Find all general-purpose AP streams waiting for a response that sent their
- * begin/resolve cell >=15 seconds ago. Detach from their current circuit, and
+ * begin/resolve cell too long ago. Detach from their current circuit, and
  * mark their current circuit as unsuitable for new streams. Then call
  * connection_ap_handshake_attach_circuit() to attach to a new circuit (if
  * available) or launch a new one.
diff --git a/src/or/or.h b/src/or/or.h
index 767ad95..2e575f5 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -2445,10 +2445,15 @@ typedef struct {
                         * connections alive? */
   int SocksTimeout; /**< How long do we let a socks connection wait
                      * unattached before we fail it? */
-  int CircuitBuildTimeout; /**< Cull non-open circuits that were born
-                            * at least this many seconds ago. */
+  int CircuitBuildTimeout; /**< If non-zero, cull non-open circuits that
+                            * were born at least this many seconds ago. If
+                            * zero, use the internal adaptive algorithm. */
   int CircuitIdleTimeout; /**< Cull open clean circuits that were born
                            * at least this many seconds ago. */
+  int CircuitStreamTimeout; /**< If non-zero, detach streams from circuits
+                             * and try a new circuit if the stream has been
+                             * waiting for this many seconds. If zero, use
+                             * our default internal timeout schedule. */
   int MaxOnionsPending; /**< How many circuit CREATE requests do we allow
                          * to wait simultaneously before we start dropping
                          * them? */
-- 
1.5.6.5



More information about the tor-commits mailing list