From a660fe6fd51cd511cdc610e4a50f06d59cbf74aa Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 20 Mar 2013 13:34:57 -0400 Subject: [PATCH 1/3] Let testing networks override ABSOLUTE_MIN_VALUE_FOR_FAST_FLAG This adds a new option to fix bug 8508 which broke chutney networks. The bug was introduced by 317d16de. --- changes/bug8408 | 4 ++++ doc/tor.1.txt | 5 +++++ src/or/config.c | 1 + src/or/dirserv.c | 3 +++ src/or/or.h | 3 +++ 5 files changed, 16 insertions(+) create mode 100644 changes/bug8408 diff --git a/changes/bug8408 b/changes/bug8408 new file mode 100644 index 0000000000..ae9cf172e1 --- /dev/null +++ b/changes/bug8408 @@ -0,0 +1,4 @@ + o Minor bugfixes: + - Allow TestingTorNetworks to override the 4096-byte minimum for the Fast + threshold. Otherwise they can't bootstrap until they've observed more + traffic. Fixes bug 8508; bugfix on 0.2.4.10-alpha. diff --git a/doc/tor.1.txt b/doc/tor.1.txt index 3be90be870..5727ec30fc 100644 --- a/doc/tor.1.txt +++ b/doc/tor.1.txt @@ -2019,6 +2019,11 @@ The following options are used for running a testing Tor network. time. Changing this requires that **TestingTorNetwork** is set. (Default: 10 minutes) +**TestingMinFastFlagThreshold** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: + Minimum value for the Fast flag. Overrides the ordinary minimum taken + from the consensus when TestingTorNetwork is set. (Default: 0.) + + SIGNALS ------- diff --git a/src/or/config.c b/src/or/config.c index 2b8eab7d63..9e2230e769 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -341,6 +341,7 @@ static config_var_t option_vars_[] = { V(PerConnBWRate, MEMUNIT, "0"), V(PidFile, STRING, NULL), V(TestingTorNetwork, BOOL, "0"), + V(TestingMinFastFlagThreshold, MEMUNIT, "0"), V(OptimisticData, AUTOBOOL, "auto"), V(PortForwarding, BOOL, "0"), V(PortForwardingHelper, FILENAME, "tor-fw-helper"), diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 8e8f79a171..81f328a647 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2005,6 +2005,9 @@ dirserv_compute_performance_thresholds(routerlist_t *rl, ABSOLUTE_MIN_VALUE_FOR_FAST_FLAG, ABSOLUTE_MIN_VALUE_FOR_FAST_FLAG, INT32_MAX); + if (options->TestingTorNetwork) { + min_fast = (int32_t)options->TestingMinFastFlagThreshold; + } max_fast = networkstatus_get_param(NULL, "FastFlagMaxThreshold", INT32_MAX, min_fast, INT32_MAX); if (fast_bandwidth < (uint32_t)min_fast) diff --git a/src/or/or.h b/src/or/or.h index 67315522ed..2b0102de32 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3910,6 +3910,9 @@ typedef struct { * of certain configuration options. */ int TestingTorNetwork; + /** Minimum value for the Fast flag threshold on testing networks. */ + uint64_t TestingMinFastFlagThreshold; + /** If true, and we have GeoIP data, and we're a bridge, keep a per-country * count of how many client addresses have contacted us so that we can help * the bridge authority guess which countries have blocked access to us. */ From 8e29a7ae1da643197cc237ecb81096cd55913eff Mon Sep 17 00:00:00 2001 From: Andrea Shepard Date: Wed, 20 Mar 2013 11:03:18 -0700 Subject: [PATCH 2/3] Fix an EOL@EOF in circuituse.c --- src/or/circuituse.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/or/circuituse.c b/src/or/circuituse.c index d48449fa81..f02597e630 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -2312,3 +2312,4 @@ mark_circuit_unusable_for_new_conns(origin_circuit_t *circ) circ->unusable_for_new_conns = 1; } + From 5c5198e713365fecf44741ae6f287c2ebdef18f6 Mon Sep 17 00:00:00 2001 From: Andrea Shepard Date: Wed, 20 Mar 2013 11:16:41 -0700 Subject: [PATCH 3/3] Set default minimum bandwidth for exit flag to zero for TestingTorNetwork --- src/or/config.c | 1 + src/or/dirserv.c | 10 ++++++++-- src/or/or.h | 3 +++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/or/config.c b/src/or/config.c index 9e2230e769..a238a1ae70 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -341,6 +341,7 @@ static config_var_t option_vars_[] = { V(PerConnBWRate, MEMUNIT, "0"), V(PidFile, STRING, NULL), V(TestingTorNetwork, BOOL, "0"), + V(TestingMinExitFlagThreshold, MEMUNIT, "0"), V(TestingMinFastFlagThreshold, MEMUNIT, "0"), V(OptimisticData, AUTOBOOL, "auto"), V(PortForwarding, BOOL, "0"), diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 81f328a647..e837e4bed5 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -1894,11 +1894,17 @@ router_counts_toward_thresholds(const node_t *node, time_t now, /* Have measured bw? */ int have_mbw = dirserv_has_measured_bw(node->ri->cache_info.identity_digest); + uint64_t min_bw = ABSOLUTE_MIN_BW_VALUE_TO_CONSIDER; + const or_options_t *options = get_options(); + + if (options->TestingTorNetwork) { + min_bw = (int64_t)options->TestingMinExitFlagThreshold; + } return node->ri && router_is_active(node->ri, node, now) && !digestmap_get(omit_as_sybil, node->ri->cache_info.identity_digest) && - (dirserv_get_credible_bandwidth(node->ri) >= - ABSOLUTE_MIN_BW_VALUE_TO_CONSIDER) && (have_mbw || !require_mbw); + (dirserv_get_credible_bandwidth(node->ri) >= min_bw) && + (have_mbw || !require_mbw); } /** Look through the routerlist, the Mean Time Between Failure history, and diff --git a/src/or/or.h b/src/or/or.h index 2b0102de32..4e19140b4b 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3910,6 +3910,9 @@ typedef struct { * of certain configuration options. */ int TestingTorNetwork; + /** Minimum value for the Exit flag threshold on testing networks. */ + uint64_t TestingMinExitFlagThreshold; + /** Minimum value for the Fast flag threshold on testing networks. */ uint64_t TestingMinFastFlagThreshold;