[tor-bugs] #18873 [Core Tor/Tor]: Refactor circuit_predict_and_launch_new()

Tor Bug Tracker & Wiki blackhole at torproject.org
Fri Oct 28 18:34:03 UTC 2016


#18873: Refactor circuit_predict_and_launch_new()
--------------------------+------------------------------
 Reporter:  asn           |          Owner:
     Type:  defect        |         Status:  new
 Priority:  Low           |      Milestone:  Tor: 0.2.???
Component:  Core Tor/Tor  |        Version:
 Severity:  Normal        |     Resolution:
 Keywords:  refactoring   |  Actual Points:
Parent ID:                |         Points:
 Reviewer:                |        Sponsor:
--------------------------+------------------------------

Comment (by chelseakomlo):

 Ok, here are my changes:

 First, I extracted a useful test helper function. I'm not sure if this is
 the right place to put it though.
 https://github.com/chelseakomlo/tor_patches/commit/7b46a8a45c5a67673a7ee2cd746b58344ba950c7

 Second, I refactored circuit_predict_and_launch_new. This is mainly a
 refactor that improves readability/testability, but I did remove one piece
 of logic which- after writing unit tests to support this- seemed
 unnecessary.
 https://github.com/chelseakomlo/tor_patches/commit/c06005d35d35339e61659cb5c5e43e8bcb60db7d

 The piece of logic that I removed is here:
 https://github.com/chelseakomlo/tor_patches/commit/c06005d35d35339e61659cb5c5e43e8bcb60db7d
 #diff-748f68b44784d7a77ebf42a2db48694eL1025

 As later, we exit if the circuit is not general purpose:
 https://github.com/chelseakomlo/tor_patches/commit/c06005d35d35339e61659cb5c5e43e8bcb60db7d
 #diff-748f68b44784d7a77ebf42a2db48694eL1031

 Let me know if this isn't a good idea and I can add it back in.

 Third, I extracted some magic numbers into named variables. I am not sure
 if the naming for these is the best, please let me know ideas for better
 names.
 https://github.com/chelseakomlo/tor_patches/commit/9ea57c857b3c5939ca3394e017f8de4ea1ac9d08

 A few things that I did not do:
 - I did not add unit tests for needs_hs_client_circuits, as it would
 require mocking the behavior of rep_hist_get_predicted_internal. I could
 definitely do that as part of this patch though.
 - I did not deeply analyze the logic in needs_exit_circuits,
 needs_hs_server_circuits, needs_hs_client_circuits, or
 needs_circuits_for_build_time as I'm still a bit unfamiliar with the
 domain.
 - I did not add integration tests

 One thing I was uncertain about was whether circuit_is_available_for_use
 should be named circuit_is_clean instead.

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


More information about the tor-bugs mailing list