[tor-bugs] #23101 [Core Tor/Tor]: Predict and build specific HS purpose circuits (rather than GENERAL)

Tor Bug Tracker & Wiki blackhole at torproject.org
Sat Nov 11 02:51:26 UTC 2017

#23101: Predict and build specific HS purpose circuits (rather than GENERAL)
 Reporter:  mikeperry                            |          Owner:  (none)
     Type:  enhancement                          |         Status:  new
 Priority:  Medium                               |      Milestone:  Tor:
                                                 |  0.3.3.x-final
Component:  Core Tor/Tor                         |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  tor-hs, tor-guard, guard-discovery-  |  Actual Points:
  prop247-controller                             |
Parent ID:  #13837                               |         Points:
 Reviewer:                                       |        Sponsor:

Comment (by mikeperry):

 Asn - you are right to worry about trying to alter how we deal with
 existing purposes, especially in a way that changes the HS state machine.
 However, adding a whole new circuit purpose is quite easy. I have done it
 several times before. I know how to do it without issue. Aside from a
 couple asserts and checks here and there, new purposes get ignored by
 existing code. That's what circuit purposes are for.

 How about this: instead of messing with the existing HS purpose state
 machine(s), we create a new purpose (say CIRCUIT_PURPOSE_HS_GENERAL), and
 then in circuit_predict_and_launch_new() we launch new circuits of that
 type when we predict we need any hidden service circuits. Then we should
 be able to make just a few changes to circuit_get_open_circ_or_launch(),
 circuit_launch_by_extend_info(), and circuit_find_to_cannibalize() to use
 this new circuit type for hidden service circuits (instead of using

 That way circuits with this new purpose will otherwise be ignored unless
 we are looking to build a new one. And that mechanism for reusing them
 will be very similar as it is today, just drawing from
 also don't have to change our current rephist prediction code.

 Sound like a plan?

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

More information about the tor-bugs mailing list