aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2016-11-23 08:02:48 -0500
committerNick Mathewson <nickm@torproject.org>2016-11-30 14:44:43 -0500
commit8edd3d2b6c43bd5eb64d79177e6e4c44ca4fc618 (patch)
tree512fd99b47772b9a1e5f0b65b51b2065835d1355 /src
parentd98b9b6d65946e14ee325327d5beac1a60ace6cc (diff)
downloadtor-8edd3d2b6c43bd5eb64d79177e6e4c44ca4fc618.tar.gz
tor-8edd3d2b6c43bd5eb64d79177e6e4c44ca4fc618.zip
Don't call into the new guard algorithm when the old one is enabled.
(I'm surprised that these are the only bugs I ran into when I tested running with the old algorithm again!)
Diffstat (limited to 'src')
-rw-r--r--src/or/circuitbuild.c5
-rw-r--r--src/or/circuituse.c3
2 files changed, 6 insertions, 2 deletions
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 2f4ce7a727..16b53f6e21 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -965,7 +965,10 @@ circuit_send_next_onion_skin(origin_circuit_t *circ)
if (!hop) {
/* done building the circuit. whew. */
int r;
- if (! circ->guard_state) {
+ if (get_options()->UseDeprecatedGuardAlgorithm) {
+ // The circuit is usable; we already marked the guard as okay.
+ r = 1;
+ } else if (! circ->guard_state) {
if (circuit_get_cpath_len(circ) != 1) {
log_warn(LD_BUG, "%d-hop circuit %p with purpose %d has no "
"guard state",
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index d2a7f20aa2..b9f94fb3a2 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -1633,7 +1633,8 @@ circuit_build_failed(origin_circuit_t *circ)
"Our circuit died before the first hop with no connection");
}
if (n_chan_id && !already_marked) {
- entry_guard_failed(get_guard_selection_info(), &circ->guard_state);
+ if (circ->guard_state)
+ entry_guard_failed(get_guard_selection_info(), &circ->guard_state);
/* XXXX prop271 -- old API */
entry_guard_register_connect_status(n_chan_id, 0, 1, time(NULL));
/* if there are any one-hop streams waiting on this circuit, fail