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,