[tor-commits] [tor/master] nodelist: Move the single-hop exit check

nickm at torproject.org nickm at torproject.org
Tue Jun 9 19:45:23 UTC 2020


commit ce11e3bf6946d1659e5915abac30b1972fc799c8
Author: teor <teor at riseup.net>
Date:   Mon May 11 17:12:02 2020 +1000

    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.
---
 src/feature/nodelist/node_select.c | 7 +------
 src/feature/nodelist/routerlist.c  | 5 +++++
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/feature/nodelist/node_select.c b/src/feature/nodelist/node_select.c
index fe88b7230..ce07c450e 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 0d3d1bea3..c18051d41 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,





More information about the tor-commits mailing list