aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorteor <teor@riseup.net>2020-05-11 17:12:02 +1000
committerteor <teor@riseup.net>2020-05-18 21:53:52 +1000
commitce11e3bf6946d1659e5915abac30b1972fc799c8 (patch)
tree4ef50cff52273cc66bf21c3d84b972eac07a6a0b /src
parent4bcec38fce7fa401f326f8c611f779dd7f67d8ff (diff)
downloadtor-ce11e3bf6946d1659e5915abac30b1972fc799c8.tar.gz
tor-ce11e3bf6946d1659e5915abac30b1972fc799c8.zip
nodelist: Move the single-hop exit check
Check for single-hop exits in router_add_running_nodes_to_smartlist(), rather than router_choose_random_node(). Part of 34200.
Diffstat (limited to 'src')
-rw-r--r--src/feature/nodelist/node_select.c7
-rw-r--r--src/feature/nodelist/routerlist.c5
2 files changed, 6 insertions, 6 deletions
diff --git a/src/feature/nodelist/node_select.c b/src/feature/nodelist/node_select.c
index fe88b7230a..ce07c450e8 100644
--- a/src/feature/nodelist/node_select.c
+++ b/src/feature/nodelist/node_select.c
@@ -985,12 +985,7 @@ router_choose_random_node(smartlist_t *excludedsmartlist,
(need_guard ? WEIGHT_FOR_GUARD : WEIGHT_FOR_MID);
SMARTLIST_FOREACH_BEGIN(node_list, const node_t *, node) {
- if (node_allows_single_hop_exits(node)) {
- /* Exclude relays that allow single hop exit circuits. This is an
- * obsolete option since 0.2.9.2-alpha and done by default in
- * 0.3.1.0-alpha. */
- smartlist_add(excludednodes, (node_t*)node);
- } else if (rendezvous_v3 &&
+ if (rendezvous_v3 &&
!node_supports_v3_rendezvous_point(node)) {
/* Exclude relays that can not become a rendezvous for a hidden service
* version 3. */
diff --git a/src/feature/nodelist/routerlist.c b/src/feature/nodelist/routerlist.c
index 0d3d1bea3e..c18051d416 100644
--- a/src/feature/nodelist/routerlist.c
+++ b/src/feature/nodelist/routerlist.c
@@ -541,6 +541,11 @@ router_add_running_nodes_to_smartlist(smartlist_t *sl, int need_uptime,
/* Don't choose nodes if we are certain they can't do ntor. */
if ((node->ri || node->md) && !node_has_curve25519_onion_key(node))
continue;
+ /* Exclude relays that allow single hop exit circuits. This is an
+ * obsolete option since 0.2.9.2-alpha and done by default in
+ * 0.3.1.0-alpha. */
+ if (node_allows_single_hop_exits(node))
+ continue;
/* Choose a node with an OR address that matches the firewall rules */
if (direct_conn && check_reach &&
!fascist_firewall_allows_node(node,