Refactor circuit cannibalization into one place
There's at least 2 different functions (and maybe many more places) where we cannibalize a circuit and add a hop. We should consolidate all of these places into a single helper function with consistent properties.
circuit_launch_by_extend_info() is one such place. circuit_extend_to_new_exit() is another.
Also, I found this old note file in my tor.git dir, which apparently I wrote some time ago while reviewing all the places we can add hops to circuits:
- Ways to add a new hop:
- onion_pick_cpath_exit
- onion_extend_cpath
- circuit_extend_to_new_exit
- circuit_append_new_exit
- onion_append_hop
- onion_append_to_cpath
- onion_append_hop
- circuit_append_new_exit
- rend_client_reextend_intro_circuit
- circuit_extend_to_new_exit2
- rend_client_receive_rendezvous
- onion_append_to_cpath
Not all of those are cannibalize code-paths, but they are worth grepping for to make sure they aren't used as such in some dark corner of the codebase.