[tor-bugs] #34200 [Core Tor/Tor]: Refactor tor's circuit path node selection checks

Tor Bug Tracker & Wiki blackhole at torproject.org
Mon May 18 12:14:22 UTC 2020


#34200: Refactor tor's circuit path node selection checks
-------------------------------------------------+-------------------------
 Reporter:  teor                                 |          Owner:  teor
     Type:  defect                               |         Status:
                                                 |  needs_review
 Priority:  Medium                               |      Milestone:  Tor:
                                                 |  0.4.4.x-final
Component:  Core Tor/Tor                         |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  ipv6,extra-review, prop311,          |  Actual Points:  1.5
  technical-debt, extra-review                   |
Parent ID:  #33221                               |         Points:  1
 Reviewer:  nickm                                |        Sponsor:
                                                 |  Sponsor55-can
-------------------------------------------------+-------------------------
Changes (by teor):

 * keywords:  ipv6, prop311, technical-debt => ipv6,extra-review, prop311,
     technical-debt, extra-review
 * reviewer:   => nickm
 * actualpoints:  1 => 1.5


Comment:

 I have rebased this PR on top of #33222, and added a changes file:
 * master: https://github.com/torproject/tor/pull/1888

 To see the changes without #33222:
 * https://github.com/teor2345/tor/pull/2

 This PR makes some of tor's node selection code a lot simpler. It fixes a
 bunch of subtle bugs and edge cases. The code was almost impossible to
 unit test before the refactor. After the refactor, it's a lot more
 consistent and modular.

 Here are the features and functions that don't have unit tests:
 * node selection
   * choose_good_exit_server_general()
   * count_acceptable_nodes()
   * router_choose_random_node_helper()
   * router_choose_random_node()
   * router_can_choose_node()
   * router_add_running_nodes_to_smartlist()

 Some of these functions are also modified in #33222. It should be easier
 to write the #33222 node selection unit tests on top of this refactor.

 This code also runs in chutney, as part of Tor's CI. But chutney doesn't
 fully test node selection.

 I suggest that we manually review the refactoring in this PR. We should
 also write unit tests for these functions (or open another ticket for the
 unit tests).

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/34200#comment:2>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list