Opened 6 years ago

Last modified 2 years ago

#7660 new enhancement

Refactor circuit cannibalization into one place

Reported by: mikeperry Owned by:
Priority: Medium Milestone: Tor: unspecified
Component: Core Tor/Tor Version:
Severity: Normal Keywords: tor-client codethulhu refactoring technical-debt
Cc: Actual Points:
Parent ID: Points:
Reviewer: Sponsor:


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
    • 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.

Child Tickets

Change History (6)

comment:1 Changed 6 years ago by nickm

Milestone: Tor: 0.2.5.x-final

comment:2 Changed 5 years ago by nickm

Milestone: Tor: 0.2.5.x-finalTor: 0.2.???

comment:3 Changed 3 years ago by teor

Milestone: Tor: 0.2.???Tor: 0.3.???

Milestone renamed

comment:4 Changed 2 years ago by nickm

Keywords: tor-03-unspecified-201612 added
Milestone: Tor: 0.3.???Tor: unspecified

Finally admitting that 0.3.??? was a euphemism for Tor: unspecified all along.

comment:5 Changed 2 years ago by nickm

Keywords: tor-03-unspecified-201612 removed

Remove an old triaging keyword.

comment:6 Changed 2 years ago by nickm

Keywords: codethulhu refactoring technical-debt added
Severity: Normal
Note: See TracTickets for help on using tickets.