]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
New config option "CircuitStreamTimeout"
authorRoger Dingledine <arma@torproject.org>
Sun, 22 Nov 2009 04:36:36 +0000 (23:36 -0500)
committerRoger Dingledine <arma@torproject.org>
Sun, 22 Nov 2009 04:36:36 +0000 (23:36 -0500)
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
src/or/config.c
src/or/connection_edge.c
src/or/or.h

index 1e19a2067d26cd9a5fecddd6ee5e44a031e3705f..24f835f357f5ed631b13e7396bf9178401755e36 100644 (file)
--- 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.
index b6a52a85de7c2002e1e8ef06900d1fcd334db775..2d2143524831f1854b53aa7e8b552fdd95a3f24c 100644 (file)
@@ -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),
index 97d6595e973766b138dce554cdc25c56e85b473b..75a57fedd51bb3197b99ed25cc07535c10cc288a 100644 (file)
@@ -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.
index 767ad95720afb7d92dd909922d304d1de4eb8c67..2e575f5ef93238af1857915caec3ac92281b5da9 100644 (file)
@@ -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? */