summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2007-04-30 09:18:48 +0000
committerRoger Dingledine <arma@torproject.org>2007-04-30 09:18:48 +0000
commit7fb4365cd3286f8fc41f6d588c12f6f7baa4b39b (patch)
tree2e8099117b3f6359d831185462eea5d0c5d2630e
parent313ac313be7189860114fdd31fcaab1b0de7393a (diff)
downloadtor-7fb4365cd3286f8fc41f6d588c12f6f7baa4b39b.tar.gz
tor-7fb4365cd3286f8fc41f6d588c12f6f7baa4b39b.zip
Add a new config option __DisablePredictedCircuits designed for
use by the controller, when we don't want Tor to build any circuits preemptively. svn:r10054
-rw-r--r--ChangeLog3
-rw-r--r--src/or/circuituse.c6
-rw-r--r--src/or/config.c3
-rw-r--r--src/or/or.h3
4 files changed, 12 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 80da7f5e73..61a4cae73a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -63,6 +63,9 @@ Changes in version 0.2.0.1-alpha - 2007-??-??
o Minor features (other):
- Correctly report Windows 95 OSR2 and Windows 98 SE.
- More unit tests.
+ - Add a new config option __DisablePredictedCircuits designed for
+ use by the controller, when we don't want Tor to build any circuits
+ preemptively.
o Removed features:
- Removed support for the old binary "version 0" controller protocol.
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 8b3e1a8f14..6bfe087100 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -448,6 +448,7 @@ void
circuit_build_needed_circs(time_t now)
{
static long time_to_new_circuit = 0;
+ or_options_t *options = get_options();
/* launch a new circ for any pending streams that need one */
connection_ap_attach_pending();
@@ -457,7 +458,7 @@ circuit_build_needed_circs(time_t now)
if (time_to_new_circuit < now) {
circuit_reset_failure_count(1);
- time_to_new_circuit = now + get_options()->NewCircuitPeriod;
+ time_to_new_circuit = now + options->NewCircuitPeriod;
if (proxy_mode(get_options()))
addressmap_clean(now);
circuit_expire_old_circuits(now);
@@ -472,7 +473,8 @@ circuit_build_needed_circs(time_t now)
}
#endif
}
- circuit_predict_and_launch_new();
+ if (!options->DisablePredictedCircuits)
+ circuit_predict_and_launch_new();
}
/** If the stream <b>conn</b> is a member of any of the linked
diff --git a/src/or/config.c b/src/or/config.c
index 568cd934be..3a11b7d787 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -123,7 +123,6 @@ static config_var_t _option_vars[] = {
VAR("AccountingMax", MEMUNIT, AccountingMax, "0 bytes"),
VAR("AccountingStart", STRING, AccountingStart, NULL),
VAR("Address", STRING, Address, NULL),
- VAR("__AllDirActionsPrivate",BOOL, AllDirActionsPrivate, "0"),
VAR("AllowInvalidNodes", CSV, AllowInvalidNodes,
"middle,rendezvous"),
VAR("AllowNonRFC953Hostnames", BOOL, AllowNonRFC953Hostnames, "0"),
@@ -258,6 +257,8 @@ static config_var_t _option_vars[] = {
VAR("V1AuthoritativeDirectory",BOOL, V1AuthoritativeDir, "0"),
VAR("VersioningAuthoritativeDirectory",BOOL,VersioningAuthoritativeDir, "0"),
VAR("VirtualAddrNetwork", STRING, VirtualAddrNetwork, "127.192.0.0/10"),
+ VAR("__AllDirActionsPrivate",BOOL, AllDirActionsPrivate, "0"),
+ VAR("__DisablePredictedCircuits",BOOL,DisablePredictedCircuits,"0"),
VAR("__LeaveStreamsUnattached", BOOL,LeaveStreamsUnattached, "0"),
{ NULL, CONFIG_TYPE_OBSOLETE, 0, NULL }
};
diff --git a/src/or/or.h b/src/or/or.h
index c44504156a..91f85f3257 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -1820,6 +1820,9 @@ typedef struct {
int LeaveStreamsUnattached; /**< Boolean: Does Tor attach new streams to
* circuits itself (0), or does it expect a controller
* to cope? (1) */
+ int DisablePredictedCircuits; /**< Boolean: does Tor preemptively
+ * make circuits in the background (0),
+ * or not (1)? */
int ShutdownWaitLength; /**< When we get a SIGINT and we're a server, how
* long do we wait before exiting? */
int SafeLogging; /**< Boolean: are we allowed to log sensitive strings